BookmarkSubscribeRSS Feed
knveraraju91
Barite | Level 11

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;

1 REPLY 1
SuryaKiran
Meteorite | Level 14

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;

Thanks,
Suryakiran

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 1184 views
  • 1 like
  • 2 in conversation