Solved
New Contributor
Posts: 4

# LAG function outside of a loop

when i use a DO loop, the LAG function works as follows.

================

data t;
do i=1 to 4;
j=lag(i);
output;
end;
====================

it gives

==========

i j

1 .

2 1

3 2

4 3

=========

however, the following does not.

===========

data t;
i=1;j=lag(i);
output;
i=2;j=lag(i);
output;
i=3;j=lag(i);
output;
i=4;j=lag(i);
output;
run;

=========

it gives

==========
i j

1 .

2 .

3 .

4 .

==========

any idea? thanks.

Accepted Solutions
Solution
‎04-15-2016 08:50 PM
Super User
Posts: 23,776

## Re: LAG function outside of a loop

Each lag function creates its own queue so with 4 lag calls versus 1 lag function you will see different behaviour.

This is is a fairly contrived example, what are you actually trying to achieve, or is it for learning purposes.

If learning, read this paper : http://www.lexjansen.com/phuse/2011/cc/CC08.pdf

All Replies
Solution
‎04-15-2016 08:50 PM
Super User
Posts: 23,776

## Re: LAG function outside of a loop

Each lag function creates its own queue so with 4 lag calls versus 1 lag function you will see different behaviour.

This is is a fairly contrived example, what are you actually trying to achieve, or is it for learning purposes.

If learning, read this paper : http://www.lexjansen.com/phuse/2011/cc/CC08.pdf

New Contributor
Posts: 4

## Re: LAG function outside of a loop

many thanks.
🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
• 2 replies
• 220 views
• 0 likes
• 2 in conversation