Re: [問題] 關於macro語法的問題

看板Statistics作者 (成立奧凶帝國!!)時間17年前 (2008/11/04 12:21), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
※ 引述《Brunhilde (不見。)》之銘言: : 剛學macro的語法 : 有點問題想請教一下 : 我有設定了 : %do i=0 %to 1; : 可是只跑出了0的部份 : 以下為全部語法 謝謝 : data y n;set HY.taidd96_06480487; : if ICD9_2 in ('493','490','491','492','494','496') then output y; : else output n; : run; : %macro aa; : data L0;Set HY.taipollcli;day=date; ^^^^ : %do i=0 %to 1; : L0&i.PM10=lag&i(PM10); : L0&i.SO2=lag&i(SO2); : L0&i.NO2=lag&i(NO2); : L0&i.CO=lag&i(CO); : L0&i.O3=lag&i(O3); : if 1996 le year(date) le 2006 then output; : if temp<23 then output; : drop PM10 CO SO2 NO2 O3 stno; : format day date9.; : run; ^^^^ data 和run 是一組的 也就是說,雖然你在最後面加了對應%do的%end 但是sas在這邊就會把妳的%do卡掉 你下面的程式我沒有細看,所以不確定你想做什麼 如果要把整個內容用i=0 和1各執行一便的話 可以把%do那一行放到data上面那一行試試看 : proc sort data= L0; : by day;run; : proc sort data=N;by IN_DATE;run; : data b;set N; day=IN_date; : BY IN_DATE; : IF FIRST.IN_DATE THEN DO; : NO=0; : END; : NO+1; : IF LAST.IN_DATE; : if 1996 le year(IN_date) le 2006 then output; : format day date9.; : run; : data ev; merge b(in=e) L0;by day; : if e=1; : run; : data event; set ev; : eventday=In_date; : format eventday date9.; : Run; : data ref1; set event; : day=eventday+7; EVEN=2; : drop L0&i.PM10 L0&i.CO L0&i.SO2 L0&i.NO2 L0&i.O3 RH temp; : format day date9.;run; : proc sort data=ref1; : by day;run; : data ref11; merge ref1(in=e) L0; : by day;if e=1;case=0; : ;run; : data ref2; set event; : day=eventday-7; EVEN=2; : drop L0&i.PM10 L0&i.CO L0&i.SO2 L0&i.NO2 L0&i.O3 RH temp; : format day date9.;run; : proc sort data=ref2; by day;run; : data ref22; merge ref2(in=e) L0; by day;if e=1;case=0; : run; : data event0;set event; : drop L0&i.PM10 L0&i.CO L0&i.SO2 L0&i.NO2 L0&i.O3 RH temp; : day=eventday; EVEN=1;format day date9.;run; : data event00;merge event0(in=e) L0; by day; : ;if e=1;case=1;run; : data test; set event00 ref11 ref22; run; : proc sort data=test;by day;run; : data test1;merge test(in=e) b;by day; : if e=1; : run; : data test2;set test1; : a&i.PM10=L0&i.PM10/24.99 ; : a&i.SO2=L0&i.SO2/2.42; : a&i.NO2=L0&i.NO2/8.67; : a&i.CO=L0&i.CO/0.37; : a&i.O3=L0&i.O3/12.2; : Run; : /*單變項ties case(0) TIES=BRESLOW weight*/ : proc phreg data=test2; : model even*case(0)=a&i.PM10 /rl TIES=BRESLOW;strata eventday; weight no;run; : proc phreg data=test2; : model even*case(0)=a&i.SO2 /rl TIES=BRESLOW; strata eventday; weight no;run; : proc phreg data=test2; : model even*case(0)=a&i.NO2 /rl TIES=BRESLOW ;strata eventday; weight no;run; : proc phreg data=test2; : model even*case(0)=a&i.CO /rl TIES=BRESLOW; strata eventday; weight no;run; : proc phreg data=test2; : model even*case(0)=a&i.O3 / rl TIES=BRESLOW; strata eventday; weight no; run; : %end; : %mend aa; : %aa; -- (C)lass 【 分組討論區 】 11 卡漫夢工廠 卡通, 漫畫, 動畫 [Ckmike] 4 C_J_Artist 作家 Σ日本漫畫家專區 [Ckmike] 10 TakahasiShin 作家 ◎****高橋真作品討論版**** kenshin528 http://kenshinsasstory.blogspot.com/ SAS Story -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.47.118

11/04 13:50, , 1F
thanks
11/04 13:50, 1F
文章代碼(AID): #193ysxlx (Statistics)