Як використовувати оператор 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 містить кумулятивну суму значень у стовпці 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 містить кумулятивну суму значень у стовпці sales , згрупованих за магазинами.

У цьому прикладі оператор RETAIN встановлює змінну cum_sales_by_store на нуль, а потім на кожній ітерації кроку DATA перевіряє, чи значення в стовпці магазину було першим входженням цього конкретного значення.

Якщо це було вперше, значення cum_sales_by_store було встановлено на значення в стовпці sales. В іншому випадку значення в стовпці sales було додано до існуючого значення для 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 було першим входженням цього конкретного значення.

Якщо це було вперше, значення store_count було встановлено на 1. В іншому випадку значення 1 було додано до існуючого значення для store_count .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в SAS:

Як розрахувати суму на групу в SAS
Як розрахувати середнє значення на групу в SAS
Як розрахувати ковзну середню в SAS

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *