SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
grayskillen
Calcite | Level 5

I have a dataset related to kidney transplants and each donor has a donor id and both the left and right kidneys are tied to that donor id. 

 

I need to create a binary variable called 'discard' (0=no, 1=yes) that is a composite of left and right kidney dispositions. 

 

Currently I have the variables:

donor_id

r_disp (5=discard, 6=transplant)

l_disp (5=discard, 6=transplant)

 

How do I create a variable called "discard" that will be a composite indicator of r_disp and l_disp so that I can investigate the odds of discard overall? 

 

 

6 REPLIES 6
ballardw
Super User

If r_disp and l_disp are on the same record in a data step:

(flag if either are discarded)

discard = (r_disp=5 or l_disp=5);

 

(flag if BOTH are discarded)

discard = (r_disp=5 and l_disp=5);

mohamed_zaki
Barite | Level 11

Could you give example of the data you have ?

grayskillen
Calcite | Level 5
A single observation will show data for the following variables (among others):

Donor_id
r_disp (fate of right kidney)
L_disp (fate of left kidney)
Kdri (measure of kidney quality)

Donor_id is the index variable.

I want to run a proc logistic to investigate the odds of discard but I only have discard data by left and right. So I need to combine them someone into one discard variable for analysis.


mohamed_zaki
Barite | Level 11

Yes, what your logic ?

 

if both of them are diecard then discard =1 

or

if any one of them is dicard then discard=1

mohamed_zaki
Barite | Level 11
data have ;
input ID r_disp l_disp;
cards;
111 5 5
112 6 6
113 5 6
114 6 6
;
run;

data want ;
set have;
if r_disp=5 and l_disp=5 then discard=1;
else discard =0;
run; 

That is example.

If you want discard to equal 1 if the right or the left is discard then change the "and" to "or" in the IF condition.

Steelers_In_DC
Barite | Level 11

The logic of discard or not isn't clear but something like this seems right:

 

data have;
input ID$ r_disp$ l_disp$;
cards;
1 5 5
2 5 6
3 6 5
4 6 6
;run;

data want;
set have;
if r_disp = '6' or l_disp = '6' then Discard = '0';
else discard = '1';
run;

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

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.

SAS Training: Just a Click Away

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

Browse our catalog!

Discussion stats
  • 6 replies
  • 3260 views
  • 0 likes
  • 4 in conversation