DATA Step, Macro, Functions and more

Retain vs lag function

Reply
Super Contributor
Posts: 371

Retain vs lag function

Hello experts,

Please, I would like to have the results of lag by retain function only[ i.e: w_1=lag(w), ...]

I want to use only "retain"

w w_1 w_2 w_3
1      
2 1    
3 2 1  
4 3 2 1
5 4 3 2
6 5 4 3
7 6 5 4
8 7 6 5
9 8 7 6
10 9 8 7
11 10 9 8
12 11 10 9
13 12 11 10
14 13 12 11
15 14 13 12
16 15 14 13
Super User
Posts: 17,748

Re: Retain vs lag function

I don't think that's how RETAIN works. 

 

What have you tried and why do you think RETAIN should be the solution?

Valued Guide
Posts: 797

Re: Retain vs lag function

  1. Read in an observation.

  2. Make an explicit output of an observation

  3. followed by updating of the retained variables.

 

Now use this technique to experiement just with W and W_1.

 

 

Super User
Posts: 5,071

Re: Retain vs lag function

If your data is contained in a SAS data set, you can take advantage of the fact that all such variables are automatically retained.  Assuming that you are working with numeric variables, you could use:

 

data want;

w_1=w;

set have;

run;

 

If you want to lag for a few observations, you have to explicitly retain those variables that are not coming from a SAS data set.  For example:

 

data want;

w_3 = w_2;

w_2 = w_1;

w_1 = w;

set have;

retain w_1 w_2;

run;

 

The trick is to copy values before the SET statement replaces W.

Super Contributor
Posts: 371

Re: Retain vs lag function

@all: Thank you very much

Ask a Question
Discussion stats
  • 4 replies
  • 252 views
  • 1 like
  • 4 in conversation