BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Kiteulf
Quartz | Level 8

How do I use the lag function or any other function for that matter... I want to convert my data from column a to column b c d depending upon the data in  a :

abcd
1
2
3
411
5
6
721
81
9
1021
111
12
1331
141
151
16
17
1 ACCEPTED SOLUTION

Accepted Solutions
Haikuo
Onyx | Level 15

Something like this?

data have;

     infile cards dlm='09'x truncover;

     input ID a;

     cards;

1         

2         

3         

4    1   

5         

6         

7    2   

8         

9         

10   2   

11        

12        

13   3   

14        

15        

;

data want;

     set have;

     retain _c _d;

     if a=1 then

           b=1;

     if a=2 then

           _c=_n_;

     if _n_<=_c+1 then

           c=1;

     if a=3 then

           _d=_N_;

     if _n_<=_d+2 then

           d=1;

     drop _:;

run;

Haikuo

View solution in original post

2 REPLIES 2
Haikuo
Onyx | Level 15

Something like this?

data have;

     infile cards dlm='09'x truncover;

     input ID a;

     cards;

1         

2         

3         

4    1   

5         

6         

7    2   

8         

9         

10   2   

11        

12        

13   3   

14        

15        

;

data want;

     set have;

     retain _c _d;

     if a=1 then

           b=1;

     if a=2 then

           _c=_n_;

     if _n_<=_c+1 then

           c=1;

     if a=3 then

           _d=_N_;

     if _n_<=_d+2 then

           d=1;

     drop _:;

run;

Haikuo

Ksharp
Super User
data have;
     infile cards  truncover;
     input ID a ;
     cards;
1         
2         
3         
4    1   
5         
6         
7    2   
8         
9         
10   2   
11        
12        
13   3   
14        
15        
;
run;
proc sql noprint;
 select count(a) into : n from have;
quit;
data want(drop=i id n);
 set have;
 array x{*} n1-n%left(&n) ;
 if not missing(a) then do;
  n+1;
  do i=1 to a;
   x{n}=1;output; a=.;
  end; end;
else output;
run;


Xia Keshan

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1108 views
  • 0 likes
  • 3 in conversation