SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2874|回复: 11
打印 上一主题 下一主题

新药统计中定量指标的SAS宏程序

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-8-29 11:57:36 | 只看该作者

新药统计中定量指标的SAS宏程序

%macro ttest(database=,var=,index=);
/*利用univariate程序输出描述性结果到result数据集*/
proc univariate noprint data=&database.;
var &var.;
   by group;
   output out=result n=n mean=mean median=med std=std min=min max=max nmiss=nmiss
   Q1=Q1 Q3=Q3;
/*将两对比组描述性结果分别输出到独立的数据集中,并定义变量的长度*/
data aa(where=(group="A")) bb(where=(group="B"));
set result;
format mean 6.2 med 6.2 std 6.2;
/*两个独立的数据集分别重新更名变量名,再合并到一个数据集中*/
data result(drop=group);
merge aa(rename=(n=NA nmiss=MA mean=MeanA med=medA std=StdA Q1=QA1 Q3=QA3 Min=MinA Max=MaxA))
bb(rename=(n=NB nmiss=MB mean=MeanB med=medB std=StdB Q1=QB1 Q3=QB3 Min=MinB Max=MaxB));
/*利用ODS输出成组T检验的结果到数据集TTests,方差齐性检验的结果到数据集Equality*/
ods listing close;
ods output TTests=TTests Equality=Equality;
proc ttest data=&database.;
   var &var.;
   class group;
run;
ods listing;
/*合并数据集ttests、Eauality到一个数据集中*/
data test2;
merge ttests Equality;
by Variable;
/*生成方差齐性的成组T检验的数据集,并定义变量格式*/
data test21;set test2; where ProbF>0.05 and Variances="Equal";length stat $5;stat="t";
/*生成方差不齐的成组T检验的数据集,并定义变量格式*/
data test22; set test2; where ProbF<0.05 and Variances="Unequal";length stat $5;stat="校正t";
/*合并成组T检验的数据集,并定义变量的长度*/
data test(keep=tValue Probt stat);
merge test21 test22;
tValue=abs(tValue);
format tValue 6.2 Probt 6.4;
/* 生成打印结果的数据集*/
/*合并描述性结果和成组T检验的数据集,生成打印的数据集,并定义打印输出格式*/
data _null_;
merge result test;
file print n=ps notitle;
    put #1 @2 "&index."   @61 stat '=' tValue @72 'P='Probt
        #2 @4 "例数(缺失)" @20 NA'('MA')' @39 NB'('MB')'
        #3 @4 "均数(标准差)" @20 MeanA'('StdA')' @39 MeanB'('StdB')'
        #4 @4 "中位数(P25-P27)" @20 MedA'('QA1'-'QA3')' @39 MedB'('QB1'-'QB3')'
        #5 @4 "最小值-最大值" @20 MinA'-'MaxA  @39 MinB'-'MaxB;
    run;
/*删除程序中生成的临时数据集,并定义打印表格的表头和表格线*/
        proc datasets; delete result aa bb TTests Equality test2 test21 test22 test stt;quit;
%mend ttest;
%macro ctitl(titl=);
data _null_;
file print n=ps notitles;
    put #1   @5 "&titl"
        #2   @2 80*'_'
        #3   @2 '指标项' @21 'A组' @40 'B组' @60 '统计量' @72 'P值'
        #4   @2 80*'_';
run;
%mend ctitl;
%macro cleg;
data _null_;
file print n=ps notitles;
    put #1 @2 80*'_';
    run;
%mend cleg;
DATA pps;
INPUT group$ Temp Pulse;
cards;
A       36.1    78
A       36.2    79
A       36.4    81
A       36.6    83
A       36.8    85
A       37      87
A       37.2    89
A       37.3    90
A       37.4    91
A       37.5    92
A       37.1    97
A       37.7    100
A       38.1    102
A       38.5    104
A       38.7    105
B       36.3    80
B       36.5    82
B       36.7    84
B       36.9    86
B       37.1    88
B       36.3    93
B       36.5    94
B       36.7    95
B       36.9    96
B       37.3    98
B       37.5    99
B       37.9    101
B       38.3    103
B       38.9    106
;
run;
%ctitl(titl=表1:两组治疗前临床一般资料报告);
%ttest(database=pps,var=Temp,index=体温/摄氏度);
%ttest(database=pps,var=Pulse,index=心率/次.min);
%cleg;


这个程序有个缺点是每条横线上都有一个空行,不知道这么删除。还有横线打印出来后,是一些点。请大家讨论指正
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-8-29 19:06:45 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

请collon版主帮忙看下,谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2007-8-30 10:05:04 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

请高人指点!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2007-8-30 21:40:05 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

直接输出到文件:

[code:16e3e]file "D:\1.txt" mod;[/code:16e3e]

另外这种方法已经过时了,没有太大意思.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2007-8-31 08:55:14 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

那collon版主能否针对这样简单的例子,提供一个不过时的办法呢?希望有详细的过程!
谢谢!谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2007-8-31 08:59:18 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

对不起,应该是collen版主。请见谅
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2007-8-31 22:18:28 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

自己试试利用tabulate/report,或者EG开发适合自己的.

另外,思特统计做什么的?有无介绍?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2007-9-1 10:44:31 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

collen版主,我觉得这个问题对你来说应该是小菜吧!您是否可以给在下这帮战友们演示一下。我是学卫生统计的,不是数学出生的,平时习惯用SPSS,SAS那块不是我的强项,所以正在努力学习,还望您多指点啊。至于“思特统计”主要是做临床科研的一些简单数据处理,新药统计对我来说吸引力挺大的,但是用SPSS做太费时了,所以想试着用SAS做几个小的宏,这样会方便一些。我知道一般大的CRO公司都有自己的宏库吧,但这些都是商业秘密,没办法得到这些资料。呵呵,毕业后有机会还是很想到这样的公司去发展下的。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2007-9-1 22:28:53 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

实际上你看明白了本板块的几个程序就很容易开发出适合自己用的啦

基础篇:定量/定性指标程序
扩展篇:宏程序的扩展
高级篇:宏的存储利用和宏库的组织

既然是商业秘密,那么对我来讲也是秘密啊,呵呵
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2007-9-2 10:16:07 | 只看该作者

Re: 新药统计中定量指标的SAS宏程序

[color=#FF8040:9ccda]国内目前尚没有如此专门的板块,由于板块过于专一,我们呼吁大家在不涉及到商业利益的前提下,高手或者说专业人才来这里和大家分享经验或技术。[/color:9ccda]
这是您说的一句话,看来不简单的几句SAS程序,已经设计到您的商业利益了。嗨,明白!明白!那只能自己研究了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 07:13 , Processed in 0.070859 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表