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

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
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
  • 1238 views
  • 1 like
  • 2 in conversation