Hello,
I will try it as simply as possible at first...
I have this dataset:
group n_animals age_difference
1 8 1
2 45 2
4 19 1
And I would like to programme this: if group=1 and n_animals<30 then create variable g2 as group+1 “but only when the next group (group=1+1) has age difference < 2”.
The part in quotes is something I cannot figure out. I would really appreciate if the syntax stayed this way so I do not have to start from scratch.
Look up the POINT= option on the SET statement. You can have one SET statement (with the POINT= option) that reads ahead and one ordinary SET statement that reads the current row to process. There are other ways too. Be sure to not use POINT= to try to read beyond the data.
Look up the POINT= option on the SET statement. You can have one SET statement (with the POINT= option) that reads ahead and one ordinary SET statement that reads the current row to process. There are other ways too. Be sure to not use POINT= to try to read beyond the data.
Assuming I understand your question.
data have; input group n_animals age_difference; cards; 1 8 1 2 45 2 4 19 1 ; data want; merge have have(keep=age_difference rename=(age_difference=_age_difference) firstobs=2); if group=1 and n_animals<30 and _age_difference< 2 then g2=group+1; drop _age_difference; run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.