【问题标题】:Different labels for variables split by across variable in proc reportproc报告中跨变量拆分的变量的不同标签
【发布时间】:2020-07-15 07:50:11
【问题描述】:

我想知道是否可以在 proc 报告中为跨变量下生成的每一列创建唯一标签。例如,假设我有以下数据:

data report;
    input ARM GRADE1 GRADE2 TOTAL N;
    datalines;
1 0 1 1 2
1 1 0 1 2
2 1 2 3 3
2 1 1 2 3
2 0 1 1 3
;
run;

这里我有 2 个手臂,每个年级的计数,然后是总数。我还包括了 N,这是每组的患者数量。我想使用proc reportARM 作为这样的跨变量:

proc report data=report;
  column ARM, (GRADE1 GRADE2 TOTAL);
  define ARM / across;
run;

但是,我想以某种方式使 Total 列分别在 ARM=1/ARM=2 下显示为 Total (N = 2)Total (N = 3)。这可能吗?或者有没有更简单的方法来设置我的数据以便我可以完成这项工作?

【问题讨论】:

    标签: sas


    【解决方案1】:

    技巧1

    您可以通过将计数和总和堆叠在总计下的从属维度中来报告计数和总和。不完全是提问者想要的输出,但简单易行。

    proc report data=report;
      column ARM, (GRADE1 GRADE2 TOTAL,(N SUM));
      define ARM / across;
    run;
    

    输出


    技巧2

    根据需要输出

    基于 DATA Step 的转换为分类形式将重新排列允许“列名”作为数据呈现的数据。 REPORT 选项 NOCOMPLETECOLS 用于防止与特定 N=nnn 无关的列。

    列标题设置为' '隐藏列名,因为原来的列名在转置时变成了数据。

    例子:

    data report;
        input ARM GRADE1 GRADE2 TOTAL N;
        rownum + 1;
        datalines;
    1 0 1 1 2
    1 1 0 1 2
    2 1 2 3 3
    2 1 1 2 3
    2 0 1 1 3
    ;
    run;
    
    * transpose the data, with a special name construct for the total;
    data reportT;
      set report;
      by rownum arm;
      length name $40;
      name = 'Grade1'; value = Grade1; output;
      name = 'Grade2'; value = Grade2; output;
      name = cats('Total (n=', n, ')'); value=total; output;
      keep arm name value;
    run;
    
    ods html file='report.html' style=plateau;
    
    proc report data=reportT NOCOMPLETECOLS;
      column arm, name, value;
      define arm / across;
      define name / ' ' across;
      define value / ' ' ;
    run;
    
    ods html close;
    

    【讨论】:

    • 这不是我想要的,只是试图更改列的标签。这是否意味着没有办法做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多