SAS двумерный массив - PullRequest
       10

SAS двумерный массив

0 голосов
/ 09 апреля 2020

Какой лучший способ понять этот код? Я предполагаю, что это двумерный массив, но не уверен, как выполнить шаги, необходимые для достижения значения 140.

Это был базовый вопрос практики sas, мне нужно будет понять массивы, подобные этому для экзамен?


data _null_;
array i{2,3}(1 2 3 4 5 6);
array j{6}(10 20 30 40 50 60);
do k=3,1;
total + i{2,k} -j{2*k};
end;
grandtotal = total + sum (of j{*});
put grandtotal=;
run;

1 Ответ

0 голосов
/ 09 апреля 2020

В чем вопрос, который вам нужно понять:

  • Инициализация двухмерного массива
    • Основной ряд
  • Инициализация 1D массива
  • Итеративные циклы DO
    • Может иметь несколько указанных диапазонов, разделенных запятой
    • Диапазон может быть одним значением
  • Оператор SUM
    • <var> + <expression>;
      • эквивалентно
        retain<var>0;
        <var> = sum (<var>,<expression>);
  • Использование OF оператор для передачи функции в массив
    • каждое значение в массиве используется функцией

Как только вы поймете, что все маленькие кусочки вы можете сделать мысленно пошагово пройдитесь по коду.

data _null_;
  * source code formatted so the values are arranged out in row major for ez understanding;
  array i{2,3} (1 2 3
                4 5 6);
  array j{6}(10 20 30 40 50 60);
  do k=3,1;
    total + i{2,k} -j{2*k};
  end;
  grandtotal = total + sum (of j{*});
  put grandtotal=;
run;

Какие значения используются в ходе выполнения программы?

  • 1-я итерация total = 0 + i{2,3} - j{2*3} или 0 + 6 - 60 = -54
  • 2-я итерация total = -54 + i{2,1) - j{2*1}, или -54 + 4 - 20 = -70
  • grandtotal = -70 + (10 + 20 + 30 + 40 + 50 + 60), или -70 + 210 = 140
...