🔒 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 05-09-2019 09:47 PM
(1944 views)
Hi everyone,
I have a long dataset and some missingness in my data. For places where there are some gaps in data I was wanting to carry forward the most recent value a maximum of TWO times. I have this code that carries forward the value of smokestat until the next non-missing value of smokestat, but I don't want it to carry it forward that far. I was having some issues adapting this code to only carry it forward a maximum of two visits. Any help appreciated!
data Aim2.Final; set Aim2.Final;
n=_n_;
if missing(smokestat) then do;
do until (not missing(smokestat));
n=n-1;
set Aim2.Final(keep=smokestat) point=n;
end;
end;
run;
Hi everyone,
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
A reasonable approach:
data want;
set have;
retain n replacement;
if smokestat > . then do;
replacement = smokestat;
n = 0;
end;
else do;
n + 1;
smokestat = replacement;
if n = 2 then call missing(replacement);
end;
run;
1 REPLY 1
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
A reasonable approach:
data want;
set have;
retain n replacement;
if smokestat > . then do;
replacement = smokestat;
n = 0;
end;
else do;
n + 1;
smokestat = replacement;
if n = 2 then call missing(replacement);
end;
run;