Dear,
I need flag certain OBS in the following data based on following conditions. Please help in my code.
I need to flag all avg OBS within awindow if visitwindow is not unscheduled.(OBS 2 and 4 flag='y')
If visit=unscheduled then I have to flag OBS with least diff value withinin awindow(OBS 8 flag=y)
If visit=unscheduled and diff=same then I have to flag OBS with last date (OBS 12 flag=y)
I trying the following code. Please suggest any thing I need to modify. Thanks
data
id test visitwindow awindow diff date
1 bp Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 2 2015-05-15
1 bpavg Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 2 2015-05-15
1 bp Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 1 2015-05-16
1 bpavg Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 1 2015-05-16
1 bp unscheduled Day 10 (+/-3) Wk 2 2 2015-05-25
1 bpavg unscheduled Day 10 (+/-3) Wk 2 2 2015-05-25
1 bp unscheduled Day 10 (+/-3) Wk 2 1 2015-05-26
1 bpavg unscheduled Day 10 (+/-3) Wk 2 1 2015-05-26
1 bp unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T11:35
1 bpavg unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T11:35
1 bp unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T12:35
1 bpavg unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T12:35
output needed
id test visitwindow a.window diff date flag
1 bp Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 2 2015-05-15
1 bpavg Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 2 2015-05-15 y
1 bp Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 1 2015-05-16
1 bpavg Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 1 2015-05-16 y
1 bp unscheduled Day 10 (+/-3) Wk 2 2 2015-05-25
1 bpavg unscheduled Day 10 (-1, +2) Wk 1 2 2015-05-25
1 bp unscheduled Day 10 (+/-3) Wk 2 1 2015-05-26
1 bpavg unscheduled Day 10 (+/-3) Wk 2 1 2015-05-26 y
1 bp unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T11:35
1 bpavg unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T11:35
1 bp unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T12:35
1 bpavg unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T12:35 y
My code:
Proc sort data=data1;
by id test date awindow decending diff;
run;
data date2;
set data1;
if index(visit,'unscheduled') = 0 and test='bpavg' then do;
if first.awindow then flag='y';
end;
if index(visit,'unscheduled') > 0 and test='bpavg' then do;
if last.diff then flag.'y';
end;
run;
data data1;
infile datalines;
input id 1 test $4-9 visitwindow $13-33 awindow $35-57 diff : 3. date $63-79;
datalines;
1 bp Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 2 2015-05-15
1 bpavg Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 2 2015-05-15
1 bp Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 1 2015-05-16
1 bpavg Day 7 (-1, +2) Wk 1 Day 4 (-1, +2) Wk 1 1 2015-05-16
1 bp unscheduled Day 10 (+/-3) Wk 2 2 2015-05-25
1 bpavg unscheduled Day 10 (+/-3) Wk 2 2 2015-05-25
1 bp unscheduled Day 10 (+/-3) Wk 2 1 2015-05-26
1 bpavg unscheduled Day 10 (+/-3) Wk 2 1 2015-05-26
1 bp unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T11:35
1 bpavg unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T11:35
1 bp unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T12:35
1 bpavg unscheduled Day 24&25 (+/-3) Wk 4 1 2015-06-25T12:35
;
run;
Proc sort data=data1;
by visitwindow awindow descending diff;
run;
data date2;
set data1;
by visitwindow awindow descending diff;
if visitwindow ^='unscheduled' and test='bpavg' then flag='y';
if visitwindow ='unscheduled' and last.awindow then flag='y';
if visitwindow ='unscheduled' and first.diff=last.diff and last.date then flag='y';
run;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.