SAS:如何重复计算和更改值?
SAS: How to repeat calculation and change values?
对于以下数据,我想创建几个新的变量,将不同权重的澳大利亚和加拿大结合起来。总之,我想检查 10 种不同的重量组合。
有没有一种方法可以做到这一点,我可以使用一个公式并只更改权重值?
例如,我可以不将 Weight_1 计算为 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;
DATA Step 没有任何类型的矢量数学语法。您可以使用一个数组来排列和引用目标变量,并使用另一个数组来保存权重。
你的结果变量 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;
如果转换使得要应用的权重之和不一致,则使用两个权重数组。
对于以下数据,我想创建几个新的变量,将不同权重的澳大利亚和加拿大结合起来。总之,我想检查 10 种不同的重量组合。
有没有一种方法可以做到这一点,我可以使用一个公式并只更改权重值?
例如,我可以不将 Weight_1 计算为 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;
DATA Step 没有任何类型的矢量数学语法。您可以使用一个数组来排列和引用目标变量,并使用另一个数组来保存权重。
你的结果变量 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;
如果转换使得要应用的权重之和不一致,则使用两个权重数组。