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
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.