У меня есть две переменные (varx и var) в наборе данных «dat», и мне нужно создать итоговую оценку, сначала классифицировав varx и var, а затем преобразовать категории оценки в окончательную оценку в соответствии с таблицей поиска "поиск".
Мне удалось обойти часть категоризации, и теперь я застрял в том, как сказать SAS использовать созданные мной категории (то есть, «varxcat» и «varcat») в качестве индексов строк и столбцов «lookup», захватить значение Мне нужно для каждого наблюдения, и поместить его в окончательную переменную оценки (назовите это «оценка») в «Дата».
В R (в котором я обычно кодирую) это легко сделать с помощью чего-то вроде цикла for. Есть ли что-нибудь подобное в SAS? (Я не должен использовать «varxcat» и «varcat», просто нужно в конечном итоге создать «счет».)
data dat;
input ID $ varx vary;
datalines;
1 1 1
2 4 5
3 11 12
4 23 14
5 24 20
;
data lookup;
input x01to10 x11to20 x21to30;
datalines;
21 52 73
84 95 96
107 118 149
; /*first row is for y01to10, second row is for y11to20, and third row is for y21to30,
such that if someone's x score is in category 1 and y score is in category 3,
the person's final score should be 107*/
data dat;
set dat;
if varx <= 10 then varxcat = 1;
else if varx > 10 & varx <= 20 then varxcat = 2;
else if varx > 20 & varx <= 30 then varxcat = 3;
if vary <= 10 then varycat = 1;
else if vary > 10 & vary <= 20 then varycat = 2;
else if vary > 20 & vary <= 30 then varycat = 3;
run;
Желаемый "dat" выглядит как
data dat;
input ID $ varx vary score;
datalines;
1 1 1 21
2 4 5 21
3 11 12 95
4 23 14 96
5 24 20 96
;