Как использовать оператор retain в sas (с примерами)


Вы можете использовать оператор RETAIN в SAS, чтобы указать переменную, значение которой не должно быть установлено как отсутствующее в начале каждой итерации шага DATA .

Оператор RETAIN можно использовать для различных задач в SAS, но вот три наиболее распространенных случая использования:

Случай 1. Используйте RETAIN для вычисления совокупной суммы.

 data new_data;
    set original_data;
    retain cum_sum;
    cum_sum + values_variable;
run ;

Случай 2: используйте RETAIN для расчета совокупной суммы для каждой группы.

 data new_data;
    set original_data;
    by grouping_variable
    retain cum_sum_by_group;
    if first.grouping_variable then cum_sum_by_group = values_variable;
    else cum_sum_by_group = cum_sum_by_group + values_variable;
run ;

Случай 3. Используйте RETAIN для расчета совокупного количества на группу.

 data new_data;
    set original_data;
    by grouping_variable
    retain count_by_group;
    if first.grouping_variable then count_by_group = 1 ;
    else count_by_group = count_by_group + 1 ;
run ;

В следующих примерах показано, как использовать каждый случай на практике со следующим набором данных в SAS, который показывает продажи, совершенные в разные магазины в последовательные дни:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 4
AT 5
At 2
B 6
B 3
B5
C 3
C 8
C 6
;
run ;

/*view dataset*/
proc print data = original_data; 

Пример 1. Используйте RETAIN для вычисления текущей суммы.

Следующий код показывает, как использовать инструкцию RETAIN для создания нового столбца в наборе данных, отображающего текущую сумму продаж:

 /*calculate cumulative sum of sales*/
data new_data;
    set original_data;
    retain cum_sales;
    cum_sales+sales;
run ;

/*view results*/
proc print data = new_data;

Новый столбец под названием cum_sales содержит совокупную сумму значений в столбце продаж .

Например:

  • Совокупная сумма по строке 1: 4
  • Совокупная сумма в строке 2: 4 + 5 = 9
  • Совокупная сумма в строке 3: 4 + 5 + 2 = 11

И так далее.

В этом примере оператор RETAIN устанавливает переменную cum_sales в ноль, а затем на каждой итерации шага DATA просто добавляет новое значение продаж к промежуточной сумме cum_sales .

Пример 2. Используйте RETAIN для расчета совокупной суммы по группе.

Следующий код показывает, как использовать инструкцию RETAIN для создания нового столбца в наборе данных, отображающего совокупную сумму продаж по магазинам:

 /*calculate cumulative sum of sales by store*/
data new_data;
    set original_data;
    by store;
    retain cum_sales_by_store;
    if first.store then cum_sales_by_store = sales;
    else cum_sales_by_store = cum_sales_by_store + sales;
run ;

/*view results*/
proc print data =new_data;

Новый столбец под названием cum_sales_by_store содержит совокупную сумму значений столбца продаж , сгруппированных по магазинам.

В этом примере оператор RETAIN устанавливает нулевое значение переменной cum_sales_by_store , а затем на каждой итерации шага DATA проверяет, было ли значение в столбце магазина первым появлением этого конкретного значения.

Если это было первое появление, значение cum_sales_by_store было установлено равным значению в столбце продаж. В противном случае значение в столбце продаж добавлялось к существующему значению для cum_sales_by_store .

Пример 3. Используйте RETAIN для расчета совокупного количества на группу.

Следующий код показывает, как использовать инструкцию RETAIN для создания нового столбца в наборе данных, отображающего совокупное количество продаж в каждом магазине:

 /*calculate cumulative count by store*/
data new_data;
    set original_data;
    by store
    retain store_count;
    if first.store then store_count = 1 ;
    else store_count = store_count + 1 ;
run ;

/*view results*/
proc print data = new_data;

Новый столбец store_count содержит совокупное количество каждого магазина.

В этом примере оператор RETAIN устанавливает нулевое значение переменной store_count , а затем на каждой итерации шага DATA проверяет, было ли значение в столбце хранилища первым появлением этого конкретного значения.

Если это было первое появление, значение store_count устанавливалось равным 1. В противном случае к существующему значению store_count добавлялось значение 1.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:

Как рассчитать сумму на группу в SAS
Как рассчитать среднее значение на группу в SAS
Как рассчитать скользящее среднее в SAS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *