【问题标题】:SAS procedure to create new columns based on variable values基于变量值创建新列的 SAS 过程
【发布时间】:2020-08-24 06:36:48
【问题描述】:

我需要制作一个按月记录的 TOP 10 表,例如:

问题是我只有“融化”的数据:

是否有一个 SAS 程序可以根据我的示例中的变量值在数据集中创建新列?

【问题讨论】:

    标签: sas


    【解决方案1】:

    您的“融化”数据采用分类形式,已为 Proc TABULATE 报告准备好锁定和加载。

    例子:

    data have;
    input date yymmdd10. treatment: $10. count:;
    format date yymmdd10.;
    datalines;
    2020-01-31 lolipops       5
    2020-01-31 chocolate      4
    2020-01-31 cakes          3
    2020-01-31 cookies        2
    2019-01-31 lolipops       2
    2019-01-31 chocolate      3
    2019-01-31 cakes          4
    2019-01-31 cookies        5
    2018-01-31 lolipops       3
    2018-01-31 chocolate      4
    2018-01-31 cakes          5
    2018-01-31 cookies        6
    ;
    
    ods html file='top10.html' style=plateau;
    
    proc tabulate data=have;
      class date / descending;
      class treatment / order=freq;
      var count;
      table treatment='', date='' * count='' * sum='' * f=6.
      / box='Treat'
      ;
    run;
    
    ods html close;
    

    报告

    【讨论】:

    • 融化的数据 - 也许 Carlito 心中有甜点。我们应该将什么称为宽数据集?巧克力棒格式?华夫饼格式?
    【解决方案2】:

    PROC TRANSPOSE

    proc sort data=have;
        by type descending date;
    run;
    
    proc transpose data=have 
                   out=want(drop=_NAME_)
                   ;
        by type;
        id date;
        var total;
    run;
    

    【讨论】:

    • 谢谢。这个解决方案最适合我,因为它创建了一个数据集,我可以稍后对其进行编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多