【问题标题】:Convert long to wide without missing values in SAS在SAS中将长转换为宽而不会丢失值
【发布时间】:2017-06-16 15:18:38
【问题描述】:

我有一个包含三个变量的数据集:申请号、拒绝代码和顺序。现在,单个应用程序可能有多个拒绝代码(将具有不同的序列号)。因此数据如下所示:

Application No       Decline Code      Sequence 

1234                      FG              1
1234                      FK              3
1234                      AF              2
1256                      AF              2
1256                      FK              1
. 
. 
. 
. 

等等

所以,我必须把它放在宽格式中,这样第一列包含唯一的申请号,并且对应于每个申请号是他们的拒绝代码(我不需要序列号,只是拒绝代码应该按顺序出现它们的序列号从左到右,用逗号分隔)。类似下面的东西

Application Number            Decline Code
1234                           FG, AF, FK
1256                           FK, AF
.......... 
......... 

等等

现在我尝试通过 SAS 上的应用程序编号破坏 proc 转置。但问题是它创建了多个列,列出了所有拒绝代码,然后如果某个拒绝代码不适用于应用程序,它将显示。在那里面。所以他们有很多缺失的值,这不是我所期望的格式。有没有办法在 SAS 或 sql 中做到这一点?

【问题讨论】:

    标签: sas sas-macro


    【解决方案1】:

    PROC TRANSPOSE 在这里当然可以提供帮助;如果你真的只想要一个变量,那么你可以将这些变量组合在一起:

    data have;
    input ApplicationNo       DeclineCode  $    Sequence ;
    datalines;
    1234                      FG              1
    1234                      FK              3
    1234                      AF              2
    1256                      AF              2
    1256                      FK              1
    ;;;;
    run;
    proc sort data=have;
      by ApplicationNo Sequence;
    run;
    proc transpose data=have out=want_pre;
      by ApplicationNo;
      var DeclineCode;
    run;
    
    data want;
      set want_pre;
      length decline_codes $1024;
      decline_codes = catx(', ',of col:);
      keep ApplicationNo decline_codes;
    run;
    

    您也可以使用firstlast 检查在一个数据步骤中轻松完成此操作。

    data want_ds;
      set have;
      by ApplicationNo Sequence;
      retain decline_codes;
      length decline_codes $1024; *or whatever you need;
      if first.ApplicationNo then call missing(decline_codes);
      decline_codes = catx(',',decline_codes, DeclineCode);
      if last.ApplicationNo then output;
    run;
    

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 2018-10-31
      • 2021-11-16
      • 2013-11-14
      • 2012-07-16
      • 2010-10-29
      • 2012-07-01
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多