作者tew (咖啡王子)
站內Statistics
標題Re: [問題] SAS迴圈問題?
時間Fri Dec 17 20:27:33 2010
其實並不用這麼複雜
如果你的資料是10000筆
你只是想要把資料前100筆跑一個 第二個100筆跑另外一個
那麼
data a;
set a;
order=int((_n_-1)/100);
run;
proc sort;by order;
run;
proc reg noprint outest=b tableout;
model y=x1-xn;
by order;
quit;
order會是0~99
那麼t b檔案就有你需要的所有資料
而且結果不會輸出到output
速度相對上會快上許多
也不需要有%macro的語法
※ 引述《liton (歐吉桑留學生)》之銘言:
: ※ 引述《tottier (透抽)》之銘言:
: : 我匯入的資料是10,000筆
: : 資料型態為第一組:1~100,第二組:101~200.....以此類推
: : 每100個為一組資料
: : 所以總共有1000組
: : 而每一組資料我要算一個p-value值
: : 所以我應該會得到1000個p-value值
: : 請問應該要怎麼寫迴圈
: 這個有點複雜 我講的大概
: 首先你得先確定你要輸出的參數的dataset
: SAS不同回歸程式 輸出的方式都不盡相同
: 最直接的是開ODS trace on; 可以參考以下這篇文章
: http://t3873229.blogspot.com/2008/12/ods.html
: 確定參數的dataset之後
: %macro OOXX;
: %do i=1 %to 100;
: ODS output 你查到的參數dataset=&if &i ne 1 %then para_tmp %else para;
: proc 跑回歸
: data=&i (轉成不同組的dataset)
: &if &i ne 1 %then %do;
: data para;
: set para para_tmp;
: proc dataset;
: delete para_tmp;
: %end;
: %macro ooxx;
: %ooxx;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.240.66
→ tew:其他的語法 也可以盡量找到相似的功能 12/17 20:28
→ liton:proc reg data=?? 12/17 20:54
→ liton:自己手動跑100次?? 裡面有自己跑100次? 12/17 20:57
→ liton:outest裡面有p-value?? 另外跑100次每次都是產出b不就蓋掉? 12/17 20:59
→ liton:oh..看懂了~~ 12/17 21:08
→ tew:好像很少人知道tableout的功能?? 12/17 21:22
→ liton:SAS各種統計指令的產出太多種了 trace on當場茶就行了 12/17 21:49
→ liton:prog logistic好像就不能用tableout 12/17 21:57
→ tew:其實分組跑資料不用急著想用巨集 我會先想有沒有辦法利用by 12/18 07:38
→ tew:來跑 這樣工作就一次完成 也不用產生過多的中間檔案 12/18 07:39
→ tew:確實只有reg才有tableout的功能 xdd 12/18 07:40
→ liton:我前幾天才寫完一個 不過我是要跑幾十個變數 變數是橫放 12/18 16:09
→ liton:而且同時跑Logistic npar1way means兼輸出分佈圖 懶得想 12/18 16:12