作者payin712 (Truth makes you free)
站内Statistics
标题[程式] 有更简便的SAS写法吗?
时间Sat Oct 24 15:20:11 2009
[软体程式类别]:SAS
[程式问题]:叙述统计
[软体熟悉度]:1个多月
[问题叙述]:
老师出了一个功课,这一题花了很多时间写,结果发现要写很长很长的程式,
想请问高手们有比较快的办法吗?
我上网找了很多Macro的语法,
可是都只有Variable的,没有针对每一个族群(像是黑人、男人、喝酒人等),
的平均或是比率做出"一个"表格的。
问题如下:
10.Create a descriptive table by site. In this table include %Male, %Black,
%College Grad, %Current Smoker, %4+ Drinks, %Family Income $75,000+, % on
High Blood Pressure Medication, Mean Age, Mean Diastolic BP, Mean Systolic
Blood Pressure, and Mean Number of Prescription (Rx) Meds. Display the total
count for each site and P-value indicating if there are statistical
differences between sites.
题目想要的是:
Chicago San Francisco P-value
N=? N=?
Male X.xx% Y.yy%
Black
College Grad
Pvalue我已经从最後一个proc means得到了,
有高手大大来信说要用tabulate,我上网找了一下,
有下列疑问:
1. 该怎麽表示每栏最後一格的value?
(我用if last.gender;在data-set-by var.下,sas都说找不到last.gender)
2. 怎麽用proc freq"同时"表示出题目要的条件?
(有那种 var gender (=1)的statement吗?)
3. 最笨的状况就是把我要的资料全部输出成几个data sets,
之後再merge一起,但是,有那种可以将proc freq,和proc means的tables
合并的语法吗?
若有高手能写出很任何行得通的语法,小女子愿以1,000p币以示感激!
[程式范例]:
这是我的版本:(我只找出各条件的个数),MEAN的部分没有条件,没有问题。
%LET TOVARS= TOMAL TOB TOCGR TOSM TOMRDR TOFI4 TOHBP;
%LET PERVARS=GENDER RACE EDUC SMK1 DRINKER1 FAMINC HIGHBP;
%LET PVARS=PMALE PBLACK PCGR PSM PMRDR PFI4 PHBP;
%LET MEANVARS=AGE DIABP SYSBP RXTOT;
PROC SORT DATA=CL1021.CBPRXDE OUT=TOTAL;
BY &PERVARS;
DATA TOTAL;
SET TOTAL;
BY &PERVARS;
DATA GENDER;
SET TOTAL;
RETAIN TOMAL;
IF FIRST.GENDER THEN TOMAL=0;
IF GENDER=1 THEN TOMAL+1;
DATA RACE;
SET GENDER;
RETAIN TOB;
IF FIRST.RACE THEN TOB=0;
IF RACE=2 THEN TOB+1;
DATA EDUC;
SET RACE;
RETAIN TOCGR;
IF FIRST.EDUC THEN TOCGR=0;
IF EDUC=3 THEN TOCGR+1;
DATA SMK;
SET EDUC;
RETAIN TOSM;
IF FIRST.SMK1 THEN TOSM=0;
IF SMK1=1 THEN TOSM+1;
DATA DRINKER;
SET SMK;
RETAIN TOMRDR;
IF FIRST.DRINKER1 THEN TOMRDR=0;
IF DRINKER1=2 THEN TOMRDR+1;
DATA FAMINC;
SET DRINKER;
RETAIN TOFI4;
IF FIRST.FAMINC THEN TOFI4=0;
IF FAMINC=4 THEN TOFI4+1;
DATA HIGHBP;
SET FAMINC;
RETAIN TOHBP;
IF FIRST.HIGHBP THEN TOHBP=0;
IF HIGHBP='YES' THEN TOHBP+1;
RUN;
PROC MEANS DATA=CL1021.CBPRXDE MEAN PRT;
CLASS SITE;
VAR &MEANVARS;
OUTPUT out=Q10MEAN;
FORMAT SITE SITE.;
TITLE ' Age, Diastolic, Systolic Blood Pressure, Prescription (Rx) Meds';
RUN;
只是我不知道怎麽把它跑出一个TABLE...
难道用MERGE去创造出一个新的DATASET,
在PRINT出一个TABLE?
烦请高手们帮忙!
-----------------------------------------------------------------------------
--
Happiness is a way of traveling, not a destination!
Peiyin's Diary--http://www.wretch.cc/blog/payinin
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 24.98.14.83
1F:→ liton:建议你简单说明一下你的资料格式 和你最後想呈现的样式 10/24 15:54
done. hope it works! thanks^0^
※ 编辑: payin712 来自: 24.98.14.83 (10/24 20:46)
2F:→ liton:你的资料格式呢?有几个栏位?分别是? 10/24 22:13
3F:→ kingbee:已经找出macro 只差临门一脚 先了解macro 基本应用 10/26 10:40
4F:推 tew:其实我还蛮想跟作者要资料来研究看看的 10/27 21:26