下面首先生成一个数据集trial,包括我的关心的score和sev;
然后我用sql中的case expression生成一个新变量sev2,跟sev一样;
但是现在我想在data步中达到这个目的
DATA TRIAL;
INPUT TRT $ CENTER PAT SEX $ AGE SCORE @@;
RESP = (SCORE GT 0);
/* RESP=0 (symptoms are absent), =1 (symptoms are present) */
IF (SCORE = 0) THEN SEV = 0; /* 0 No Symptoms*/
IF ( 1 LE SCORE LE 30) THEN SEV = 1; /* 1 mild Symptoms*/
IF (31 LE SCORE LE 69) THEN SEV = 2; /* 2 moderate Symptoms*/
IF (SCORE GE 70) THEN SEV = 3; /* 3 severe Symptoms*/
DATALINES;
A 1 101 M 55 5 A 1 104 F 27 0 A 1 106 M 31 35
A 1 107 F 44 21 A 1 109 M 47 15 A 1 111 F 69 70
A 1 112 F 31 10 A 1 114 F 50 0 A 1 116 M 32 20
B 1 105 M 45 20 B 1 108 F 44 65 B 1 110 M 32 25
B 1 113 M 61 75 B 1 115 M 45 83 B 1 117 F 21 0
B 1 120 F 19 55 B 1 122 F 38 0 B 1 125 M 37 72
;
run;
proc sql outobs=12;
create table a1 as
select score, sev,
case
when score eq 0 then 0
when 1 le score le 30 then 1
when 31 le score le 69 then 2
else 3
end as sev2
from trial;
quit;