作者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