sas - proc报告中跨变量拆分的变量的不同标签
问题描述
我想知道是否可以在 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 report
withARM
作为这样的跨变量:
proc report data=report;
column ARM, (GRADE1 GRADE2 TOTAL);
define ARM / across;
run;
但是,我想以某种方式使 Total 列分别显示为ARM=1/ARM=2Total (N = 2)
和下。Total (N = 3)
这可能吗?或者有没有更简单的方法来设置我的数据,这样我就可以做到这一点?
解决方案
技术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;
推荐阅读
- mysql - 选择用户未观看的所有电影并将结果限制为 20
- python-3.x - 使用 python 类替换嵌套字典中的值
- laravel - Laravel 中的“未定义偏移量:1”错误。到底是怎么回事?
- javascript - ._where 将数组作为谓词值传递
- php - PHP - 当我可以通过 $_File 数组获取路径信息时,为什么要使用它
- c# - 必须如何将地址写入 api 控制器并在控制器中使用属性。ASP.NET 核心
- java - 如何在流布局中组织对象?
- javascript - Javascript函数不返回变量
- javascript - 曼德布罗集合中的噪声
- sql-server - 站点移动到第 3 方托管时出现 SQL Server Express 连接字符串错误