Hi Experts,
I need to swap missing value with above value so please help me in the same.
data abc;
input sub $ score;
datalines;
001 120
001 .
002 220
001 .
002 .
003 .
003 230
;
run;
data abc1;
set abc;
score2=lag(score);
if score = . then score=lag(score);
run;
WANT
001 120
001 120
002 220
001 220
002 220
003 220
003 230
thnx
Try this:
data have;
input sub $ score;
datalines;
001 120
001 .
002 220
001 .
002 .
003 .
003 230
;
run;
data want;
set have;
retain x1;
if score = .
then score = x1;
else x1 = score;
drop x1;
run;
proc print noobs;
run;
Result:
sub score 001 120 001 120 002 220 001 220 002 220 003 220 003 230
Hi Rahul
below can do the trick
data abc1;
retain score;
set abc(rename=(score=score2));
if score2 ne . then score=score2;
drop score2;
run;
Try this:
data have;
input sub $ score;
datalines;
001 120
001 .
002 220
001 .
002 .
003 .
003 230
;
run;
data want;
set have;
retain x1;
if score = .
then score = x1;
else x1 = score;
drop x1;
run;
proc print noobs;
run;
Result:
sub score 001 120 001 120 002 220 001 220 002 220 003 220 003 230
Hi KurtBremser,
Thank you for the help.
I have one more point, if the first observation has a missing value then how will it work??
thnx
rahul
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.