瑞德统计案例之sas实现定性变量自动化报表输出

一、案例说明:

利用sas强大的宏功能以及proc

report程序、三线表模板程序等生成规范化格式表格,如下表所示。此案例针对试验组与对照组间不同指标的统计比较以及不同指标各类别的在两组间的频数、构成比描述,对于分类变量两组的差别比较考虑卡方检验,并深入考虑不同情况下特定的统计量与P值,如二分类变量的四格表卡方检验、多分类的R*2表卡方检验等。

试验组

对照组

___________________

___________________

指标

分类

例数

构成比(%)

例数

构成比(%)

统计量

P值

产次

0

42

51.22

121

53.78

11.15

0.0249

1

34

41.46

83

36.89

.

2

2

2.44

19

8.44

.

3

4

4.88

1

0.44

.

4

0

0.00

1

0.44

.

流产

0

46

56.10

114

50.67

5.13

0.5276

1

16

19.51

60

26.67

.

2

13

15.85

27

12.00

.

3

4

4.88

12

5.33

.

4

1

1.22

10

4.44

.

、、、、略

、、、、、略

此案例来源于瑞德统计所做项目,更多交流请关注瑞德统计qq群(339465755或1605103914)

二、程序解读

此程序包括三个宏程序%chisq、%fl、%cmh,一个输出控制程序proc

report,其中%chisq是针对四格表的卡方检验,并且详细控制具体结果选择,比如一般卡方结果、校正卡方结果、精确概率结果等;%fl具体宏变量依次为变量名,变量分类最低值,变量分类最高值,变量标签及变量具体类别(n=1表示无序多分类,2表示有序分类);%cmh主要针对多分类变量的统计分析,并且根据变量的有序无序给出对应统计量;proc

report过程控制报表输出格式,通过ods指定输出地址,全局语句option指定输出内容整体格局,细微控制在report语句中精确控制,具体见下面程序。

%macro chisq(set,ind);

ods output freq.table1.crosstabfreqs=frq;

ods output freq.table1.chisq=chi;

ods output freq.table1.fishersexact=fish;

proc freq data=&set;tables

taipbl*&ind/chisq expected fisher;run;

proc means data=frq;var expected;

output out=frq1

min=min;

run;

data f1;set chi;if

statistic="卡方";stat1=value;p1=prob;

run;

data f2;set chi;if

statistic="连续校正卡方";stat2=value;p2=prob;

run;

data f3;set fish;if

name1="XP2_FISH";stat3=.;p3=cvalue1;

run;

data f4;set frq1;call

symput("expect",min);run;

data f;merge f1 f2 f3;

if &expect>=5 then do;

stat=stat1;pr=p1;

end;

if &expect<5 and &expect>=1 then

do;

stat=stat2;pr=p2;

end;

if &expect<1 then do;

stat=stat3;pr=p3;

end;

if pr>=0 and pr<0.0001 then

p="<0.0001";

if pr>=0.0001 then p=put(pr,6.4);

if p=" " then p="1.0000";

group=1;format stat 8.2;

run;

data g(drop=value);set f;

if group=1 then tre="试验组"; if group=0 then

tre="对照组";

if p=" " then p=".";

run;

%mend;

%chisq(rmm,chanc);

%chisq(rmm,liuc);

、、、、、略

%macro fl(xm,n1,n2,xmmc,n);

%do i=0 %to 1;

data a&i;set rmm;if

taipbl=&i;run;

data t&i;run;

%do j=&n1 %to

&n2;

data b&j;set a&i;if &xm=&j;run;

data c&j;run;

proc means noprint data=b&j;var &xm;output

out=c&j n=n&i;

run;

data dd&j;value=&j;name="&xmmc";run;

data d&j;merge dd&j c&j;run;

data t&i;set t&i d&j;if value^=.;run;

%end;

proc freq noprint

data=a&i;tables &xm/out=e&i;run;

data f&i;set

e&i;p_ms&i=percent;value=&xm;if

value^=.;run;

data g&i;merge t&i

f&i;by value;run;

%end;

data d;merge g1 g0;by value;

if

n1=. then n1=0;if n0=. then n0=0;

if

n1=0 then p_ms1=0;if n0=0 then

p_ms0=0;

format

p_ms1 p_ms0 6.2;

run;

data e;run;

%if &n2-&n1=1 %then %do;

%chisq(rmm,&xm);

%end;

%macro cmh(set,ind,n);

proc freq noprint

data=&set;tables taipbl*&ind/cmh;

output out=e cmh;

run;

data g(drop=value);set e;

if

&n=1 then do;

stat=_cmhga_;pr=p_cmhga;

end;

if &n=2 then do;

stat=_cmhrms_;pr=p_cmhrms;

end;

if

pr>=0 and pr<0.0001 then p="<0.0001";

if

pr>=0.0001 then p=put(pr,6.4);

if p=" "

then p="1.0000";

format

stat 8.2;

run;

%mend;

%if

&n2-&n1>1 %then %do;

%cmh(rmm,&xm,&n);

%end;

data

h;merge d g;run;

data

tab;set tab h;if name^=" ";run;

%mend;

data tab;length name $20;name=" ";run;

%fl(chanc,0,4,产次,1);

%fl(liuc,0,6,流产,1);

\\\\\\\略

ods

listing close;

ods rtf

file="d:\某某\tab2.rtf";style=three;

style=Styles.mystyle;

title 表2 定性变量描述和比较;

options nodate nonumber center;

proc report data=tab nowd split="*";

column name value ("试验组" "___________________" n1 p_ms1)

("对照组" "___________________" n0 p_ms0) stat

p;

define name/order=data "指标" group

style(column)=[just=center];

define value/order=data

"分类" style(column)=[just=center];

define n1/order=data "例数"

style(column)=[just=center];

define p_ms1/order=data "构成比(%)"

style(column)=[just=center];

define n0/order=data "例数"

style(column)=[just=center];

define p_ms0/order=data "构成比(%)"

style(column)=[just=center];

define stat/order=data "统计量"

style(column)=[just=center];

define p/order=data "P值"

style(column)=[just=center];

run;

quit;

ods rtf close;

ods listing;

sas字段有html脚本,sas 实现自动化报表格式之定性变量相关推荐

  1. Python 自动化报表格式设置

    报表自动化中excel 的格式处理时其中很总要的一部分,以下内容为常见的python 操作excel的格式处理. [不显示网格线] # ws为要设置格式的工作表 ws.views.sheetView[ ...

  2. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  3. 使用脚本完成AutoCAD自动化任务课程

    The complete AutoCAD Automation tasks course Using Script MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 C ...

  4. jenkins运行日志时间与linux,持续集成之Jenkins结合脚本实现代码自动化部署及一键回滚至上一版本...

    一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负载均衡器删除.解压.复制配置文件.创建软连接.测试每一台web服务器.将we ...

  5. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  6. SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(2)数据获取与数据集操作 1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序, 2. BY语句,DATA步中,BY语句规定 ...

  7. SAS(五)建立SAS数据集的方法及导出数据

    SAS(五)建立SAS数据集的方法 1.data步自己输入数据建立. data oranges; input variety $ flavor texture looks; /*total=flavo ...

  8. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  9. SAS 运行过程中出现‘SAS 磁盘已满 OUT OF RESOURCES’解决办法!

    SAS 运行过程中出现'SAS 磁盘已满 OUT OF RESOURCES'解决办法! 当SAS在WORK逻辑库运行大量数据时可能会出现'磁盘已满 OUT OF RESOURCES'的情况,那是由于w ...

  10. vba mysql 自动化错误_在Excel中运行VBA脚本时出现自动化错误

    在Excel 2007中运行VBA代码时出现自动化错误.我尝试连接到远程SQL Server数据库并将数据从Excel加载到SQL Server.在Excel中运行VBA脚本时出现自动化错误 我得到的 ...

最新文章

  1. 【转载】在对话框中加入属性页
  2. 白盒测试之初识gtest工具
  3. mysql 异步_MySQL -- 异步I/O
  4. 33. Implement strStr()
  5. opencv 光线影响_在OpenCV中使用色彩校正
  6. Playing with OS(操作系统)
  7. java解析marc乱码_国际C语言乱码大赛(IOCCC)的一个经典作品
  8. Linux学习-软件磁盘阵列
  9. 如何让计算机自动锁屏,怎样设置电脑自动锁屏
  10. excel数据正在计算机,excel数据太多表格太卡-急!Excel数据量大,电脑卡死?
  11. 记一次ASP绕过WTS-WAF
  12. 使用Libgdx游戏引擎做的2D横版过关游戏
  13. 这次经历给我埋下了学理财的种子
  14. uni-app解析及配置(小程序对应的转换)
  15. rar文件解压后可以删除吗?rar文件删除后怎么恢复?
  16. IP地址配置基础命令---IP v4
  17. 使用公式使用户输入年利率,贷款额度和支付年数,计算支付额度
  18. 经济危机与宏观经济学
  19. 万字报告拆解:Web3 浪潮风靡,NFT 找到新增长点,AIGC 如火如荼
  20. Unity 3D项目 - 01 - 开始游戏主界面

热门文章

  1. 集成学习之Bagging与随机森林算法原理小结
  2. python画圆形螺旋线_在PDMS中使用python直接生成管口方位图(开源分享第三集)...
  3. 域服务器安全策略应用,ad域服务器组策略命令
  4. audio接线图解_拒绝做小白 你应该知道的常见音频接口
  5. 链表---合并两个有序链表
  6. 一个简单易用的m3u8下载器,支持下载m3u8链接或文件为mp4或ts格式
  7. 使用Petalinux定制自己的linux系统
  8. 安装tensorflow踩的那些坑
  9. 没有磁盘计算机就无法工作,解决办法:Bios找不到硬盘的完美解决方案,请选择STATConfigur...
  10. Jenkins--下载安装及简单配置