【问题标题】:"ALL"-Option for BY (SAS PROC TABULATE)“ALL”- BY 选项(SAS PROC TABULATE)
【发布时间】:2019-10-31 12:42:39
【问题描述】:
ODS EXCEL FILE="/mypoath/myfile.xlsx" options(
    frozen_headers="3"
    sheet_name="#byval1");
 PROC TABULATE data=out;
  BY byVariable; 
  CLASS varA varB;
  TABLES varA, varB;
 RUN;
ODS EXCEL CLOSE;

上面的代码创建了一个带有不同工作表的 excel 文件。变量byVariable 的每个值对应一张表。有没有办法创建一个附加表“ALL”,其中包含byVariable 的所有值的结果?我的意思是“ALL”之类的东西(在 TABLES 部分中使用)。我已经尝试过BY ALL byVar(这不起作用)。 感谢您的帮助!

【问题讨论】:

    标签: excel sas proc tabulate


    【解决方案1】:

    简单的答案是否定的。如果您想要所有数据,请不要使用 BY 语句。

    ODS EXCEL FILE="/mypoath/myfile.xlsx" options(frozen_headers="3");
    ODS EXCEL options(sheet_name="ALL");
    PROC TABULATE data=out;
      CLASS varA varB;
      TABLES varA, varB;
    RUN;
    ODS EXCEL options(sheet_name="#byval1");
    PROC TABULATE data=out;
      BY byVariable; 
      CLASS varA varB;
      TABLES varA, varB;
    RUN;
    ODS EXCEL CLOSE;
    

    【讨论】:

      【解决方案2】:

      没有这样的选择。

      你可以:

      • 在没有BY 的情况下重新运行报告,或者
      • stack 将 by 变量修改为 ALL 自身的数据 - 使其高于所有存在的按值。
      data stacked / view=stacked;
        set 
          have
          have (in=stackflag)
        ;
      
        if stackflag then do;
          byvar = 'A0'x || 'ALL';        * A0 forces value to be 'after' other original byVar values;
        end
      run;
      
      proc tabulate data=stacked;
        by byvar; 
        …
      

      注意:'A0'x 是一个硬空格 ASCII 字符

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多