我想引用数组中的表,最终在数据步骤中使用进程。这里是代码:是否可以在数组语句中使用表?
proc sql;
create table claims.iterations
as select Allowed_Claims, Px1
from simulation
order by Allowed_Claims, Px1;
quit;
data simulation_iterations;
array Members {24} _temporary_ (5 6 8 10 12 15 20 25 30 40 50 60 70 80
90 100 125 150 175 200 250 300 400 500);
array ****** ;
do i = 1 to 24;
do j = 1 to Members{i}-1;
Px2 = rand('Uniform',0,1);
if Px2 > 0.5 then Px2=Px2;
output;
end;
output;
end;
run;
是否有可能这样做?虽然没有显示,但我想使用表格来尝试为“成员”数组中的值进行线性插值。
编辑:
欲插用于基于随机生成的值(从0到1)Allowed_Claims。下面列出了我基于我的线性插值的精简表。
Allowed_Claims Px1
25.224545313 0.0008129708
34.767797696 0.0014747668
35.367278291 0.0015210493
42.616660238 0.0021191153
52.495185148 0.0030343735
52.652599162 0.0030497846
53.26904904 0.0031103676
57.183442582 0.0035034118
例如,让我们称此方法A中,如果Px2 = rand('Uniform',0,1)
产生0.0010,我希望它的Allowed_Claims值之间进行内插,其中Px1中= 0.0008129708和Px1中= 0.0014747668。
该数组的作用是它决定了我想要的进程A的迭代次数。该数组是
Members {24} _temporary_ (5 6 8 10 12 15 20 25 30 40 50 60 70 80
90 100 125 150 175 200 250 300 400 500);
所以循环开始时,其将执行5次迭代方法A的,从而产生内插5“allowed_claims”值。我希望得到这五个索赔的平均值。
然后,循环将继续并执行过程A的6次迭代并产生6个内插的“allowed_claims”值。再次,我想要这6个索赔的平均值。
我想输出表的样子:
`
Member[i] Average_Expected_Claims
5 (average of 5 interpolated claims)
6 (average of 6 interpolated claims)
8 (average of 8 interpolated claims)
你想插入什么?你想用什么公式?显示一些实际值和公式以及结果插值。然后讨论如何缩减将该公式应用于示例数据中的多个变量和值。 – Tom
仅仅是您想要将数据集中的所有观察结果包含到结果集中?例如,如果您的datastep中只有DO I = 1到24循环,那么您是否希望这意味着claim.iteration中的每个值都会在输出数据集中复制24次?如果是这样,那么在set语句中使用POINT =选项。 – Tom
嘿,汤姆,我编辑了上面的问题,使其更加清晰。 – indiansrulz