BookmarkSubscribeRSS Feed
sam369
Obsidian | Level 7

Hi All,

 

I am trying to flag the variable, which is not missing in particular vis, See the below sample data and code which i tried. any insight will be helpful. Thanks in advance

 

data have;

infile datalines truncover;

  input subj  visn val ;

  datalines;

    100  1 10

      100 24

      100 45 9

      101  1 12

      101 24 15

      101 45

      102  1

      102 24 15

      102 45 65

      103   1 10

      103  24 11

      103  45 15

      ;

run;

 

want:

    subj visn val  flg

      100  1    10   0 (non missing visn 1,24,45 (visn 24 val is missing)

      100 24         0 (non missing visn 1,24    (visn 24 val is missing

      100 45    9    1 (non missing visn 1,45     visn 1,45 val is not missing)

      101  1    12   0

      101 24    15   1

      101 45         0

      102  1         0

      102 24    15   0

      102 45    65   0

      103   1   10   1

      103  24   11   1

      103  45   15   1

 

code:

proc sort data=have; by subj visn;run;
data want;
  do until(last.visn);
  set have;
   by subj visn;
        if visn(1,24,45) & missing(val) then flg=0;
   else if visn in (1,24) & missing(val) then flg=0;
   else if visn in (1,45) & missing(val) then flg=0;
  end;
  do until(last.visn);
  set have;
   by subj visn;
   output;
  end;
run;

 

Thanks

Sam

2 REPLIES 2
ballardw
Super User

I think that you need to provide more of a description of how you are assigning flag values. For example in your want data

    subj visn val  flg
      100  1    10   0 (non missing visn 1,24,45 (visn 24 val is missing)
      100 24         0 (non missing visn 1,24    (visn 24 val is missing
      100 45    9    1 (non missing visn 1,45     visn 1,45 val is not missing)

you say Val is missing on the first line but it appears that the value of Val is 10.

 

Similar for

      101  1    12   0
      101 24    15   1

the rule(s) you are using don't seem to be clearly stated for why the first gets a 0 and the second gets a 1

 

 

Do you mean to say "If ANY of the values of the variable Val within an ID group is missing for VISN values of 1, 24 or 45 <then do something>?

 

You should also probably provide some values of VISN other than 1,24 and 45 so we have a chance to know what to do in that case.

sam369
Obsidian | Level 7

Hi Ballardw,

 

Thank you for the response!!! Apologies for not providing full information.

as my sample data shown, my data as only 3 visn (1,24,45). Need to flag 0 to below conditions:

 

VISN: non missing (val)

 

1  : subj with non-missing visn 1 and (visn 24 or visn 45)

24 : subj with non-missing visn 1 and visn 24

45: subj with non-missing visn 1 and visn 45

 

 

Thanks

Sam

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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
  • 2 replies
  • 972 views
  • 0 likes
  • 2 in conversation