如何为 sas 中的每一行分组 50 列并为其值创建一个新列?

我有 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


月关宝盒
浏览 328回答 3
3回答

收到一只叮咚

只需使用 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));

富国沪深

如果您愿意使用一个小技巧,您可以重新标记名称角色变量。proc transpose data=sashelp.class out=test;   by name;   var _all_;   attrib _name_: label='This is how';   run;

BIG阳

Proc transpose 或许可以帮到你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python