How to replace the "missing value ." between 2000/01/02 and 2000/02/15 with the value "5" on 2000/01/01?
ID DATE Variable
01 2000/01/01 5
01 2000/01/02 .
01 2000/01/03 .
01 2000/01/04 .
01 2000/01/05 .
.................
01 2000/02/15 .
01 2000/02/16 7
Assuming that there are many ID like '01' and many case like missing value between 2000/01/02 and 2000/02/15. Is there any efficient way to replace these missing value with the most recently available value like '5' in this case before new value like '7' is available?
data have;
input ID$ DATE:yymmdd10. Variable;
format DATE yymmdd10.;
datalines;
01 2000/01/01 5
01 2000/01/02 .
01 2000/01/03 .
01 2000/01/04 .
01 2000/01/05 .
01 2000/02/15 .
01 2000/02/16 7
;
data want;
update have(obs=0) have;
by ID;
output;
run;
data have;
input ID$ DATE:yymmdd10. Variable;
format DATE yymmdd10.;
datalines;
01 2000/01/01 5
01 2000/01/02 .
01 2000/01/03 .
01 2000/01/04 .
01 2000/01/05 .
01 2000/02/15 .
01 2000/02/16 7
;
data want;
update have(obs=0) have;
by ID;
output;
run;
You'll find the answer to the antecedent to this topic in How to merge daily and quarterly dataset
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.