Hi All,
Need small help. I have data like below
A | Unique_ID | Version |
Murder | 1 | 1 |
Theft | 1 | 2 |
dacoity | 1 | 3 |
Murder | 2 | 1 |
Murder | 2 | 2 |
I want an output like below:
Unique ID | Previous_A | Present_A |
1 | Theft | Dacoity |
2 | Murder | Murder |
Basically if for Unique_ID there is a version. For the last version and before last version if Column "A" is different then I need 2 column to be created Previous_A and Present_A. Previous A will hold the 2nd last version value and Present A will hold the last version value.
data have;
input A $ Unique_ID Version;
datalines;
Murder 1 1
Theft 1 2
dacoity 1 3
Murder 2 1
Murder 2 2
;
data want;
set have;
by Unique_ID Version;
lagA=lag1(A);
if last.Unique_ID then do;
Previous_A=lagA;
Present_A=A;
output;
end;
keep Unique_ID Previous_A Present_A;
run;
data have;
input A $ Unique_ID Version;
datalines;
Murder 1 1
Theft 1 2
dacoity 1 3
Murder 2 1
Murder 2 2
;
data want;
set have;
by Unique_ID Version;
lagA=lag1(A);
if last.Unique_ID then do;
Previous_A=lagA;
Present_A=A;
output;
end;
keep Unique_ID Previous_A Present_A;
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.