Re: [程式] 請問如何讓SAS清楚秀出跑幾次了
我寫一個簡單的模擬語法
給你做個參考
%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 × 在程式裡,希望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
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
04/13 00:25, 4F
推
04/13 20:01, , 5F
04/13 20:01, 5F
→
04/13 20:56, , 6F
04/13 20:56, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):