Re: [程式] 請問如何讓SAS清楚秀出跑幾次了

看板Statistics作者 (咖啡王子)時間15年前 (2010/04/12 23:49), 編輯推噓4(402)
留言6則, 5人參與, 最新討論串2/2 (看更多)
我寫一個簡單的模擬語法 給你做個參考 %macro a; %do i=1 %to 10000; data a; do i=1 to 100; a=rannor(&i); output; end; run; proc means noprint data=a; var a; output out=b&i mean=a; run; %end; %mend; %a; 該語法是一個模擬語法 計算出10000次 每次模擬100個標準常態分配的數值的平均數 會產生出10000個檔案的數值 但是有更簡便的方法 data a; do j=1 to 10000; do i=1 to 100; a=rannor(1); output; end; end; run; proc means noprint data=a; var a; by j; output out=b mean=a; run; 該語法的作用和前面的巨集一樣 但是 時間會縮短很多 如果你的資料特徵是可以利用by來處理 那就不要執著一定要用巨集 基本上我之前也做過模擬時間序列的東西 最早寫的語法要花50分鐘才跑完 那時候真的覺得模擬是一件很困難的事情 但是後來 改成後者的語法 只要5分鐘 所以 雖然你的語法是正確的 但是可以思考一下 能不能採用by的語法來執行 若可以 那就稍微修改一下程式吧 會讓你的速度變快很多 ※ 引述《coolsweetie ()》之銘言: : [軟體程式類別]: : SAS : [軟體熟悉度]: : 中(3個月到1年) : [問題敘述]: : 寫了一個Do迴圈,讓SAS跑1000次的模擬,但是跑好久跑得我無所適從, : 想說如果可以知道現在times跑到第幾次了,等待時心裡也比較有個底。 : 因此放了一個 %Put &times 在程式裡,希望SAS可以在Log秀出現在跑到第幾次了。 : 可是log畫面跳得很快,我還得在一大堆的訊息裡快速看出現在跑到第幾次, : 實在好傷眼力啊,想請問一下板上網友,有沒有更好的方法?謝謝。 : 現在主要程式是這樣: : %macro Simulation; : %DO Times = 1 %TO 1000; : ... : ... : ... : %Put &Times; : %End; : %MEND Simulation; : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.202.26 ※ 編輯: tew 來自: 114.44.202.26 (04/12 23:56) ※ 編輯: tew 來自: 114.44.202.26 (04/12 23:57)

04/13 00:01, , 1F
非常謝謝tew網友的建議,我的程式似乎也可以這樣改,
04/13 00:01, 1F

04/13 00:02, , 2F
我來試試看,再次謝謝你
04/13 00:02, 2F

04/13 00:05, , 3F
謝謝分享 我也學起來
04/13 00:05, 3F

04/13 00:25, , 4F
不用這麼麻煩吧.. option symbolgen;
04/13 00:25, 4F

04/13 20:01, , 5F
請問第二段程式是: a=rannor("i"); 嗎?
04/13 20:01, 5F

04/13 20:56, , 6F
just 1
04/13 20:56, 6F
文章代碼(AID): #1Bmq3ilz (Statistics)
文章代碼(AID): #1Bmq3ilz (Statistics)