使用子集数据集在SAS中生成自定义表
我想使用SAS和eg.proc report在我的工作流中生成一个自定义表 原因:之前,我使用proc export dbms=excel,手工做了一些非常基本的统计,并复制粘贴到excel表格中以完成报告,我已经开始使用ODS excel将所有相关数据打印到excel工作表中,但由于ODS excel总是会覆盖整个excel工作簿,因此也会覆盖手工制作的统计数据,我现在希望简化流程 这项任务本身实际上非常简单。我们有一些关于ID、年龄和注册的信息,比如:使用子集数据集在SAS中生成自定义表,sas,Sas,我想使用SAS和eg.proc report在我的工作流中生成一个自定义表 原因:之前,我使用proc export dbms=excel,手工做了一些非常基本的统计,并复制粘贴到excel表格中以完成报告,我已经开始使用ODS excel将所有相关数据打印到excel工作表中,但由于ODS excel总是会覆盖整个excel工作簿,因此也会覆盖手工制作的统计数据,我现在希望简化流程 这项任务本身实际上非常简单。我们有一些关于ID、年龄和注册的信息,比如: data test; input ID
data test;
input ID $ AGE CENTER $;
datalines;
111 23 A
. 27 B
311 40 C
131 18 A
. 64 A
;
run;
目标是生成一个表报告,该表报告的结构如下所示:
ID NO-ID Total
Count 3 2 5
Age (mean) 27 45.5 34.4
Count by Center:
A 2 1 3
B 0 1 1
A 1 0 1
看起来,proc报告只将变量作为列,而不是子集合ID NE。;ID=。当然,我可以用三个子集数据集生成三份报告,然后分别打印,但我希望有一种方法可以将其放在一个表中
proc report是这方面的正确工具吗?如果是,我应该如何继续?还是使用proc tablate、proc template或…?我找到了一种与我想要的几乎匹配的方法。首先,我必须在数据集中引入一个新变量vID valid ID,0 not valid,1 valid,如下所示:
data test;
input ID $ AGE CENTER $;
if ID = '' then vID = 0;
else vID = 1;
datalines;
111 23 A
. 27 B
311 40 C
131 18 A
. 64 A
;
run;
在此之后,我能够按照@Reeza在评论中的建议使用proc tablate来构建一个与我最初的目标非常相似的表:
proc tabulate data = test;
class vID Center;
var age;
keylabel N = 'Count';
table N age*mean Center*N, vID ALL;
run;
不过,我想知道是否有一种方法根本不引入新变量,只使用SAS计数器进行缺失和非缺失观测
更新:
@Reeza指出使用proc格式为缺失/未缺失的ID数据赋值。与missing(缺失)选项结合在一起,在proc TABLATE(过程表格)中打印缺失的值,这将在不引入新变量的情况下提供输出:
proc format;
value $ id_fmt
' ' = 'No-ID'
other = 'ID'
;
run;
proc tabulate data = test missing;
format ID $id_fmt.;
class ID Center;
var age;
keylabel N = 'Count';
table N age*(mean median) Center*N, (ID=' ') ALL;
run;
PROC TABLATE更适合于此。到目前为止,您还没有展示您尝试过的任何内容,请更新您的问题,以包括您迄今为止所做的任何尝试?Thx@Reeza,我能够生成一个几乎符合我使用proc TABLATE所需的输出,请随时检查我的答案。然而我仍然想知道我是否真的需要为此引入一个新的变量…您是否尝试了ID上的格式?您还必须添加缺少的选项。proc格式;值$id_fmt missing='No id'other='id';跑很高兴听到这个消息,你找到了表格法!