data:
ID | a | b |
1 | 10 | 2 |
1 | 200 | 14.4 |
1 | 400 | 5 |
1 | 600 | 5 |
want:
ID | a | b | c (flag) |
1 | 10 | 2 | 0 |
1 | 200 | 14.4 | 0 |
1 | 400 | 5 | 0 |
1 | 600 | 5 | 1 |
So, variable b has same value 5 in rows 3 and 4. I need to flag first value (row 3)as 0 and subseqent rows containing value 5 as 1.
Thank you.
How about this then:
proc sort data=have;
by id b;
run;
data want;
set have;
by id b;
c = 0;
if not first.b and b=5 then c=1;
run;
- Jan
This is my 2 cents. Depending on what you'd like to do with variable a your final version can differ. But the use of first. will be my recommendation.
proc sort data=have;
by id b;
run;
data want;
set have;
by id b;
if first.b then c=0;
else c=1;
run;
Regards,
- Jan.
You code works but I need to flag only one numeric value 5. For instance, if there are duplicate 8 values , there is no need to flag
How about this then:
proc sort data=have;
by id b;
run;
data want;
set have;
by id b;
c = 0;
if not first.b and b=5 then c=1;
run;
- Jan
Thanks. It works
Good to hear. Glad to be of help. Please do not hesitate to flag the question as resolved.
Regards Jan.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.