BookmarkSubscribeRSS Feed
deleted_user
Not applicable
data xx;
input usubjid visit result $ 5;
cards;
1 1 a
1 2 a
1 3 n
2 1 n
2 2 n
2 3 n
;
run;

if usubjid having any one of the visit, result=a then that usubjid should have new variable x='a' other wise usubjid should have x='n'.

example:

above data set will be having below output:

usubjid x
1 a
2 n

To get this output please give me some sas code.
2 REPLIES 2
deleted_user
Not applicable
data xx;
input usubjid visit result $ 5;
cards;
1 1 a
1 2 a
1 3 n
2 1 n
2 2 n
2 3 n
;
run;

proc sort data=xx;
by usubjid result;
run;

data xxxx;
set xx;
by usubjid result;
if first.usubjid and first.result and result='a' then x='a';
else x='n';
keep usubjid x;
if first.usubjid and first.result;
run;


Try this it will work.
sbb
Lapis Lazuli | Level 10 sbb
Lapis Lazuli | Level 10
A more general-purpose code logic would be to use IF FIRST.usubjid THEN DO; END; logic to test initialize a "temporary" SAS variable to the desired no-match condition, and use a RETAIN to keep track of this variable, and if the desired "match" condition is encountered for the "test" variable, set the "temporary" variable to a given value. The, use the IF LAST.usubjid THEN DO; END; logic to reset RESULT to the temporary variable and do an OUTPUT.

This logic flow does not require a particular sort-sequence or "match" value order condition to work properly. The key here is using the RETAIN statement to track a temporary variable in the DATA step (remember to either DROP this var or specify a KEEP statement).

Scott Barry
SBBWorks, Inc.

sas-innovate-2024.png

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.

 

Register now!

New Learning Events in April

 

Join us for two new fee-based courses: Administrative Healthcare Data and SAS via Live Web Monday-Thursday, April 24-27 from 1:00 to 4:30 PM ET each day. And Administrative Healthcare Data and SAS: Hands-On Programming Workshop via Live Web on Friday, April 28 from 9:00 AM to 5:00 PM ET.

LEARN MORE

Discussion stats
  • 2 replies
  • 991 views
  • 0 likes
  • 2 in conversation