【问题标题】:How to reshape data wide to long [duplicate]如何将数据从宽变长[重复]
【发布时间】:2016-02-25 15:22:38
【问题描述】:

我想将数据列重塑为行

初始表如下图

ID1     ID2     ID3     Name
----------------------------
I001    I002    I003    John

愿望表像

ID      Name
------------
I001    John
I002    John
I003    John

有人可以帮忙吗?

非常感谢!!

【问题讨论】:

    标签: sas transpose


    【解决方案1】:

    一种方法是设置一个 ID 数组并使用显式 OUTPUT 语句循环。

    data want;
      set have;
    
      array ids(3) id1-id3;
    
      do i=1 to dim(ids);
          ID=ids(i);
          OUTPUT;
      end;
    run;
    

    【讨论】:

      【解决方案2】:

      您可以使用PROC TRANSPOSE 确保您的数据按NAME 排序

      proc transpose data=have out=want(rename=(_name_=ID));
      by Name;
      run;
      

      【讨论】:

      • 值得注意的是@Reeza的回答更有效率。对于查看您的代码的新人来说,这种方式往往更容易阅读(并且打字更少)。除非您的数据集很大,否则性能差异可以忽略不计。
      • 谢谢你们俩。他们都完美地工作!非常感谢!
      • 没问题。赞成票总是受到赞赏。 ;-)
      猜你喜欢
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2021-04-23
      • 2017-11-04
      相关资源
      最近更新 更多