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

Hi everyone, 

 

If i have a data which is the following

 

data t;INPUT x;

cards;
1
2
1
2
3
1
2

 

This data set is merged from each person. 

 

So, its id should be 1 1 2 2 2 3 3.

 

How could I get the the id I want? I have tried use the if first statement, but I failed. 

 

Please tell me the easiest way to do it. 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

This would be one way:

 

 

data want;

set have;

priorx = lag(x);

if _n_=1 or x <= priorx then id + 1;

drop priorx;

run;

 

This assumes that when X stays the same from one observation to the next, that the ID should be different.

 

Good luck.

View solution in original post

1 REPLY 1
Astounding
PROC Star

This would be one way:

 

 

data want;

set have;

priorx = lag(x);

if _n_=1 or x <= priorx then id + 1;

drop priorx;

run;

 

This assumes that when X stays the same from one observation to the next, that the ID should be different.

 

Good luck.

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 1 reply
  • 1038 views
  • 1 like
  • 2 in conversation