我有 50 个分类列,其中包含数字和 1 个单独的列用于唯一标识符和 100 行。我想从中创建一个新的数据集,它有 3 列: Column1 用于唯一标识符;Column2 用于为每行分组的分类列;和, Column3 为数值。目前,我有这个:ID Column1 Column2..........Column 50--- ------- ------- ---------A 23 40 90B 50 7 79C 0 9 4我要这个,ID GroupedColumn Value--- ----------- ----- A Column1 23 Column2 40 . . Column50 90B Column1 50 Column2 7 . . Column50 79C Column1 0 Column2 0 . . Column50 4
3 回答
收到一只叮咚
TA贡献1821条经验 获得超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));
富国沪深
TA贡献1790条经验 获得超9个赞
如果您愿意使用一个小技巧,您可以重新标记名称角色变量。
proc transpose data=sashelp.class out=test;
by name;
var _all_;
attrib _name_: label='This is how';
run;
添加回答
举报
0/150
提交
取消