Временные массивы SAS — ценная возможность SAS, о которой часто забывают. Я часто вижу, что многие начинающие и средние программисты SAS не знакомы с временными массивами. К счастью, в них нет ничего сложного, и они очень полезны. Прежде всего, что такое временный массив?

Начнем с "обычного" массива:

array x[10] x1-x10;

Этот массив x связан с 10 переменными x1-x10. (Помните, что в качестве имени массива можно использовать любое допустимое имя SAS, оно не должно быть связано с именами переменных.) Теперь перейдем к временному массиву.

array y[10] _temporary_;

Вы указываете ключевое слово _TEMPORARY_ там, где обычно указываете имена переменных. С временным массивом не связаны никакие переменные. В этом примере можно сослаться на переменную y[1] или y[2] и т.д., но переменных y1, y2 и т.д. нет.

Мое любимое использование временного массива - это поиск в таблице. Вы можете загрузить элементы временного массива, а затем использовать эти элементы для хранения значений. Пример приведен ниже:

У вас есть цели продаж за годы с 1 по 10 и показатели продаж для всех продавцов за эти 10 лет. Вы хотите сравнить продажи каждого продавца с целями продаж за 10 лет. Поместив 10 целей продаж во временный массив, вы можете получить цель для конкретного года. Элементы временного массива автоматически сохраняются в памяти, поэтому они идеально подходят для таких задач. Чтобы увидеть, как это работает, взгляните на следующий код:

*Program to demonstrate temporary arrays;
data Revenue;
   array Goal[10] _temporary_;
   *Load the temporary array with values;
   if _n_ = 1 then do Year = 1 to 10;
      input Goal[Year] @;
   end;
   *Now input the sales data;
   input Name $ Year Sales;
   Difference = Sales – Goal[Year];
datalines;
10 11 14 15 18 20 23 28 30 33
Fred 3 16
Joan 1 11
Helen 8 45
;
title "Listing of Data Set Revenue";
proc print data=Revenue noobs;
run;

Результат будет таким:

Возможно, вы захотите определить массив Goal:

array Goal[2001:2010] _temporary_;

В качестве индекса можно использовать фактическое значение за год. Обратите внимание на двоеточие между двумя годами. В результате индексы получают значения с 2001 по 2010. Кроме того, поскольку массивы могут быть многомерными, вы можете выполнять многонаправленные поисковые запросы. Попробуйте.

Оригинал статьи на английском