BookmarkSubscribeRSS Feed
SASPhile
Quartz | Level 8


 proc sql;
    create table want as
      select * from  have
   where  prxmatch("/1|Y|yes/i",Results_In_Death)
   union
        select * from  have
        where prxmatch("/fatal/i",OutCome)
  union
  select * from  have
  where  prxmatch("/death|dead|fatal|(subject|patient|participant).*(expire)/i",Term_Verbatim)
  union
       select * from  have
       where prxmatch("/na/i",Death_Date)=0;
 quit;
 
 
 the idea is to subset the dataset have that meet the where condition.but the results are not expected. for example results_in_death is showing values like 0,na etc.
    also outcome is showing values like disease progression etc
 how to subset the data just based on where conditions?

3 REPLIES 3
ChrisNZ
Tourmaline | Level 20

Don't you mean


proc sql;
    create table want as
      select * from  have
   where prxmatch("/1|Y|yes/i",Results_In_Death)
     and prxmatch("/fatal/i",OutCome)
     and prxmatch("/death|dead|fatal|(subject|patient|participant).*(expire)/i",Term_Verbatim)
     and prxmatch("/na/i",Death_Date)=0;
 quit;

Note that the parentheses in the third test seem oddly placed.

 

SASPhile
Quartz | Level 8

it is OR not AND

ChrisNZ
Tourmaline | Level 20

If you use OR then you will get dates not equal to NA or results_in_death not equal to yes. Why are you surprised?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1372 views
  • 0 likes
  • 2 in conversation