Я хотел бы создать новую переменную "тип", основанную на истинности условий для нескольких переменных, но у меня слишком много переменных (~ 100) для ввода. Я использую SAS Studio v 9.4.
Мои данные настроены примерно так:
DATA have;
INPUT id
a_var_a a_var_b a_var_c a_var_d a_var_e
b_var_a b_var_b b_var_c b_var_d
c_var_a c_var_b c_var_c d_var_d;
DATALINES;
01 1 0 0 0 0 0 0 0 0 0 0 0 0
02 0 1 0 0 0 0 0 0 0 0 0 0 0
03 0 0 1 0 0 0 0 0 0 0 0 0 0
04 0 0 0 1 0 0 0 0 0 0 0 0 0
05 0 0 0 0 1 0 0 0 0 0 0 0 0
06 0 0 0 0 0 1 0 0 0 0 0 0 0
07 0 0 0 0 0 0 1 0 0 0 0 0 0
08 0 0 0 0 0 0 0 1 0 0 0 0 0
09 0 0 0 0 0 0 0 0 1 0 0 0 0
10 0 0 0 0 0 0 0 0 0 1 0 0 0
11 0 0 0 0 0 0 0 0 0 0 1 0 0
12 0 0 0 0 0 0 0 0 0 0 0 1 0
13 0 0 0 0 0 0 0 0 0 0 0 0 1
;
Run;
«тип» кодируется как:
- 1 Если любая из групп a vars (a_var :) равна 1
- 2 Если любая из групп b vars (b_var :) равна 1
- 3 Если любая из групп c vars (c_var :) равна 1
- остальное равно 0
Я думал, что это будет так же просто, как:
Data want;
Set have;
If a_var: = 1 then type = 1;
Else If b_var: = 1 then type = 2;
Else If c_var: = 1 then type = 3;
Else type = 0;
Run;
Однако я продолжаю получать код ошибки, потому что мне не разрешено группировать переменные.
Я пытался сделать то же самое с массивом, но все еще не могу найти решение:
Data want;
Set have;
Array a (*) a_var:;
Array other (2,4) b_var: c_var:;
do i = 1 to dim(a);
If a(i) = 1 then type=1;
end;
do i = 1 to 4;
If other (1,i) = 1 then type=2;
If other (2,i) = 1 then type=3;
Else type=0;
end;
drop i;
Run;
Я пытаюсь создать 3 категории переменной типа (0,1,2 и 3) в зависимости от того, как выполняются условия.