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;

如果转换使得要应用的权重之和不一致,则使用两个权重数组。