SAS: Как повторить расчет и изменить значения? - PullRequest
0 голосов
/ 28 ноября 2018

Для следующих данных я хочу создать несколько новых переменных, которые объединяют Австралию и Канаду с разными весами.В целом, я хотел бы изучить 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;

enter image description here

1 Ответ

0 голосов
/ 28 ноября 2018

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;

Используйте два массива весов, если преобразование таково, что сумма применяемых весов не равна единице.

...