对于以下数据,我想创建几个新的变量,将具有不同权重的澳大利亚和加拿大结合起来。总体而言,我想研究10种不同的重量组合。
有没有一种方法可以在其中使用一个公式并仅更改重量值?
例如,我可以只列出所需的权重,然后根据此列表创建变量,而不是计算Weight_etc到Weight_etc?
data Weighted_returns; set returns;
Weight_1 = (Australia*0.6)+(Canada*0.4);
Weight_2 = (Australia*0.5)+(Canada*0.5);
Weight_3 = (Australia*0.4)+(Canada*0.6);
run;
答案 0 :(得分:1)
DATA步骤没有任何矢量数学语法。您可以使用一个数组来排列和引用目标变量,使用另一个数组来保持权重。
您的结果变量weight*
与权重数组会有点冲突,因此我将结果变量命名为result*
data have;
input australia canada;
datalines;
0.07 0.08
0.02 -0.001
0.05 0.01
run;
data want;
set have;
array results result_1-result_3;
array weights (3) _temporary_ (0.6 0.5 0.4);
do _n_ = 1 to dim(results);
results(_n_) = australia * weights(_n_) + canada * (1 - weights(_n_));
end;
run;
如果变换使得要应用的权重之和不统一,则使用两个权重数组。