DATA Step, Macro, Functions and more

LAG function outside of a loop

Accepted Solution Solved
Reply
New Contributor
Posts: 4
Accepted Solution

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: 17,868

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

 

 

View solution in original post


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

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.

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

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