使用子集数据集在SAS中生成自定义表

使用子集数据集在SAS中生成自定义表,sas,Sas,我想使用SAS和eg.proc report在我的工作流中生成一个自定义表 原因:之前,我使用proc export dbms=excel,手工做了一些非常基本的统计,并复制粘贴到excel表格中以完成报告,我已经开始使用ODS excel将所有相关数据打印到excel工作表中,但由于ODS excel总是会覆盖整个excel工作簿,因此也会覆盖手工制作的统计数据,我现在希望简化流程 这项任务本身实际上非常简单。我们有一些关于ID、年龄和注册的信息,比如: data test; input ID

我想使用SAS和eg.proc report在我的工作流中生成一个自定义表

原因:之前,我使用proc export dbms=excel,手工做了一些非常基本的统计,并复制粘贴到excel表格中以完成报告,我已经开始使用ODS excel将所有相关数据打印到excel工作表中,但由于ODS excel总是会覆盖整个excel工作簿,因此也会覆盖手工制作的统计数据,我现在希望简化流程

这项任务本身实际上非常简单。我们有一些关于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';跑很高兴听到这个消息,你找到了表格法!