我有这样的数据集:
ID_no | Medication_type
1 | type_1
1 | type_2
2 | type_1
3 | type_2
3 | type_3
3 | type_4
我想把它转换成一套
ID_NO | Medication 1 | Medication2 | Medication 3
1 | type_1 | type 2 |
2 | Type_1 | |
3 | Type_2 | Type_3 | Type_4
要做到这一点,我需要做一个proc转置,但我想我需要一个这样的序列号来实现:
ID_no | Medication_type | Seq_NO
1 | type_1 | 1
1 | type_2 | 2
2 | type_1 | 1
3 | type_2 | 1
3 | type_3 | 2
3 | type_4 | 3
但不幸的是,我在sas中遇到麻烦。我试着这样做:
data want;
set have;
by ID_no;
if first.ID_no then do;
seq_no = 1;
seq_no + 1;
end;
run;
但它一直都很重要,我为什么不知所措?
答案 0 :(得分:4)
您已经有一个用于分组的变量,您不需要另一个变量。
proc transpose data=have out=want prefix=medication_ ;
by id_no;
var medication_type;
run;
关于创建SEQ_NO变量的尝试,需要将sum语句移出IF块,以便为每次观察运行它。这样的事情。
data want;
set have;
by ID_no ;
if first.ID_no then seq_no=0;
seq_no+1;
run;