美文网首页
SAS编程:过程步结果如何输出到数据集?

SAS编程:过程步结果如何输出到数据集?

作者: 野藤_ | 来源:发表于2022-04-25 00:08 被阅读0次

这个问题,在SAS编程-Efficacy:如何生成样本率的可信区间?第4节有过描述,这里另开一篇文章进行说明,方便以后文章进行引用。

过程步运行结果输出到数据集,通常有两种做法。第一,在过程步中,使用Output语句;第二,使用ods output语句进行输出。两者输出结果的展现形式,略有不同。

需要注意的是,并非所有过程步都有output语句。如果没有,需要使用ods output语句进行输出。

0. 举例程序

以FREQ过程步输出样本率可信区间为例,正常实现的代码为:

***Get raw data;
data tmp;
  do i = 1 to 13;
    aval = 0; 
    output;
  end;

  do i = 1 to 131;
    aval = 1; 
    output;
  end;

  drop i;
run;

***Count frequency;
proc format;
  value aval
    0 = 0
    1 = 1
  ;
run;

proc means data = tmp nway completetypes;
  format aval aval.;
  class aval / preloadfmt order = data;
  var aval;
  output n = count out = count(drop = _:);
run;


**Get exact 95% CI for the proportion of positive;
proc freq data = count;
  tables aval/ binomial(cl = exact level = "0");
  weight count / zeros;
run;

Results中的红框中的内容需要获取的可信区间的上下限。

Result

下面以提到的2种方法进行演示。

1. Output语句

FREQ过程步中,本身就有output语句。为了输出tables语句中的binomial选项的结果,output语句中,也需要添加选项binomial。具体语法参考SAS Help Center: OUTPUT Statement

proc freq data = count;
  tables aval/ binomial(cl = exact level = "0");
  weight count / zeros;
  output out = cl binomial;
run;

输出的数据集的如下:

CI

数据集中红色方框里的两个变量,就是对应可信区间的上下限。输出数据集中每个变量的Label都会描述变量的含义,很容易辨识。

与Results内容相比,Ouput语句输出的数值没有Format,以原始数据的形式进行展示。不过,这不影响数值的使用。

4.2 ods output语句

SAS过程步输出到Results中的内容,都是有具体的名称,可以通过ods output将具体名称对应的内容输出到数据集。

这种方法,首先要查看Results输出内容对应的具体名称,通常也有2种方式。

第一,从SAS官方文档中查询。例如,FREQ过程步中,Details栏中有ODS Table Names的汇总。对应的binomial选项输出内容名称如下(来源:SAS Help Center: ODS Table Names

binomial

其他过程步也在类似的位置,文档中会有特定选项输出结果对应的名称。

SAS文档搜索入口如下:SAS Documentation | SAS Support,可以直接搜索想要过程步的信息。

SAS DOC

第二,也可以用ods trance on;进行查询输出内容的名称

ods trace on ;

proc freq data = count;
  tables aval/ binomial(cl = exact level = "0");
  weight count / zeros;
run;

ods trace off;

以上程序运行之后,Results中输出内容的名称就会输出到Log中:

Log

知晓内容名称后,就可以使用ods output语句将对应内容输出到数据集:

*ods trace on ;
ods output BinomialCLs = cl;

proc freq data = count;
  tables aval/ binomial(cl = exact level = "0");
  weight count / zeros;
run;

ods output close;
*ods trace off;

运行结果如下,上下限的数值以6.4的Format进行展示,与Results中显示一致。

BinomialCLs

输出到数据集之后,具体如何处理成Table中的显示,这里就不过多讲了。

总结

文章介绍了,将过程步结果输出到数据集的2种方法,这个操作在处理Efficacy内容时会多次用到。关于具体使用哪种方法输出到数据集,每个人可能有自己的编程习惯, 看个人喜好。

感谢阅读!若有疑问,欢迎评论区交流!

相关文章

网友评论

      本文标题:SAS编程:过程步结果如何输出到数据集?

      本文链接:https://www.haomeiwen.com/subject/ucbxyrtx.html