看板 Statistics 關於我們 聯絡資訊
其實並不用這麼複雜 如果你的資料是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