🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 10-07-2016 02:24 AM
(1844 views)
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
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
3 REPLIES 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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