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: 19,789

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?

Trusted Advisor
Posts: 1,019

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,504

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

Posted in reply to Astounding

@all: Thank you very much

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