SAS:如何重复计算并更改值?

时间:2018-11-28 00:35:48

标签: sas sas-macro

对于以下数据,我想创建几个新的变量,将具有不同权重的澳大利亚和加拿大结合起来。总体而言,我想研究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;

enter image description here

1 个答案:

答案 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;

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