我有 50 个分类列,其中包含数字和 1 个单独的列用于唯一标识符和 100 行。我想从中创建一个新的数据集,它有 3 列: Column1 用于唯一标识符;Column2 用于为每行分组的分类列;和, Column3 为数值。
目前,我有这个:
ID Column1 Column2..........Column 50
--- ------- ------- ---------
A 23 40 90
B 50 7 79
C 0 9 4
我要这个,
ID GroupedColumn Value
--- ----------- -----
A Column1 23
Column2 40
.
.
Column50 90
B Column1 50
Column2 7
.
.
Column50 79
C Column1 0
Column2 0
.
.
Column50 4
只需使用 PROC TRANSPOSE。
proc transpose data=have out=want ;
by id;
run;
自动变量_NAME_
将具有原始变量名称,而值将位于名为 的变量中COL1
。您可以使用 PROC TRANSPOSE 语句上的选项来更改默认名称。
proc transpose name=GroupedColumn prefix=Value out=want;
请注意,名称仍会1
附加到每个 ID 的第一次观察中。如果每个 ID 有多个观察值,那么您还将获得 VALUE2、VALUE3 等。
或者使用rename=
输出数据集上的dataset 选项来更改新变量的名称。
proc transpose name=GroupedColumn out=want(rename=(col1=Value));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句