我想堆叠这种类型的数据集:
PATIENT_ID AA BB CC DD EE
1 22 33 44 55 66
2 77 88 99 10 11
... .. .. .. .. ..
进入以下内容:
PATIENT_ID GROUP VALUE
1 AA 22
1 BB 33
1 CC 44
1 DD 55
1 EE 66
2 AA 77
2 BB 88
2 CC 99
2 DD 10
2 EE 11
... .. ..
检查所有组的正常性,因为它们是依赖/链接的。
如何在SAS中进行堆叠?谢谢。
答案 0 :(得分:5)
使用proc transpose
:
data pats;
input PATIENT_ID AA BB CC DD EE;
cards;
1 22 33 44 55 66
2 77 88 99 10 11
;
run;
proc transpose data=pats out=pats_long;
by patient_id;
run;
答案 1 :(得分:4)
正如@itzy所示,proc transpose是为这些类型的数据重构任务创建的,可能就是你想要使用的。
为了完整性,我将展示如何仅使用数据步骤通过更手动的方法获得相同的结果。
data short;
input PATIENT_ID AA BB CC DD EE;
cards;
1 22 33 44 55 66
2 77 88 99 10 11
;
run;
data long(keep= PATIENT_ID GROUP VALUE);
set short;
array vars(*) AA--EE;
do i=1 to dim(vars);
GROUP=vname(vars(i));
VALUE=vars(i);
output;
end;
run;
proc print data=long noobs;run;