Hi all the experts,
How do I find the earliest date within dateofadmin, dateofdrug and dateofmed for each ID using SAS code?
(ex. the earliest date for ID110 is dateofadmin14842 ((14842<18390 and ignore the ".")) )
and then i want to put the earliest in a new column :S
the date has been transfer into numeric format already.
However, i couldnt find the ways to compare numbers within columns :S
Please kindly give me a hint , would really be appreciated!
data want;
set have;
firstdate = .;
array datex {3} dateofadmin dateofdrug dateofmed;
do i=1 to 3;
if datex(i) ne . then do;
if firstdate = . then firstdate = datex(i);
else if datex(i) < firstdate then firstdate = datex(i);
end; end;
run;
The MIN function should ignore missing values:
earliest_date = min(dateofadmin, dateofdrug, dateofmed);
The min function accepts any number of arguments.
data want;
set have;
firstdate = min(dateofadmin, dateofdrug, dateofmed);
run;
thank you so much!
Now i have one more question
what if i wanna add one more column "where" is states where does the first date comes from?
like,
thank you 🙂
data want;
set have;
firstdate = .;
array datex {3} dateofadmin dateofdrug dateofmed;
do i=1 to 3;
if datex(i) ne . then do;
if firstdate = . then do;
firstdate = datex(i);
where = vname(datex(i));
end;
else if datex(i) < firstdate then firstdate = datex(i);
end; end;
run;
It's possible to shorten the code by a line or two using arrays, but this variation might be easier to understand.
data want;
set have;
earliest_date = min(dateofadmin, dateofdrug, dateofmed);
length varname $ 32;
if earliest_date > . then select (whichn(earliest_date, dateofadmin, dateofdrug, dateofmed));
when (1) varname='dateofadmin';
when (2) varname='dateofdrug';
when (3) varname='dateofmed';
end;
run;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.