是否有可能多次重複一個數據步驟(例如您可能在%do-%while循環中),其中重複次數取決於數據步驟?SAS - 重複一個數據步驟來解決一個值
我有一個數據集與數值變量答:我計算一個新的變量結果= min(1,A)。我希望結果的平均值等於一個目標,我可以通過將常量k縮放變量A來達到目標。這是解決k其中目標=平均(最小(1,A * K)) - 其中K和目標是常數和A是一個列表。
這是我到目前爲止有:
filename f0 'C:\Data\numbers.csv';
filename f1 'C:\Data\target.csv';
data myDataSet;
infile f0 dsd dlm=',' missover firstobs=2;
input A;
init_A = A; /* store the initial value of A */
run;
/* read in the target value (1 observation) */
data targets;
infile f1 dsd dlm=',' missover firstobs=2;
input target;
K = 1; * initialise the constant K;
run;
%macro iteration; /* I need to repeat this macro a number of times */
data myDataSet;
retain key 1;
set myDataSet;
set targets point=key;
A = INIT_A * K; /* update the value of A /*
result = min(1, A);
run;
/* calculate average result */
proc sql;
create table estimate as
select avg(result) as estimate0
from myDataSet;
quit;
/* compare estimate0 to target and update K */
data targets;
set targets;
set estimate;
K = K * (target/estimate0);
run;
%mend iteration;
我可以通過運行%iteration
幾次想要的答案,但我非常希望運行迭代,直到(target - estimate0 < 0.01)
。這樣的事情可能嗎?
謝謝!
如果您將目標,估計值0或目標估計值0總計爲一個或多個宏變量。然後你可以在你的宏中使用%do%until循環,直到(%eval)總計<0.01 – 2015-04-03 13:45:07