Sas proc报告中按变量拆分的变量的不同标签

Sas proc报告中按变量拆分的变量的不同标签,sas,Sas,我想知道是否有可能在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; 在这里,我有两个手臂,每个等级的计数和总数。我还包括了N,即每只手臂的患者数量。我想将proc report与ARM一起用作跨变量,如下所示: proc re

我想知道是否有可能在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;
在这里,我有两个手臂,每个等级的计数和总数。我还包括了N,即每只手臂的患者数量。我想将
proc report
ARM
一起用作跨变量,如下所示:

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

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

技术1

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

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


技术2

按需输出

基于数据步骤的分类形式转换将重新排列数据,以允许“列名”作为数据显示。
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;

这并不完全是我想要的,只是尝试更改列的标签。这是否意味着没有办法做到这一点?