Як використовувати функцію lag у sas (з прикладами)


Ви можете використовувати функцію LAG у SAS, щоб отримати зміщені значення змінної.

Ця функція використовує такий базовий синтаксис:

 lag1_value = lag (value);

За замовчуванням lag знаходить попереднє значення змінної.

Однак ви можете використовувати lag2 , lag3 , lagn тощо. для розрахунку значень при 2 затримках, при 3 затримках, при n-лагах і т.д.

Наступні приклади показують, як використовувати функцію lag на практиці.

Приклад 1: Зміщені значення, обчислені для певних змінних

Припустімо, у нас є такий набір даних у SAS, який показує загальну кількість продажів, здійснених магазином за послідовні дні:

 /*create dataset*/
data original_data;
    input day $sales;
    datalines ;
1 14
2 19
3 22
4 20
5 16
6 26
7 40
8 43
9 29
10 30
11 35
12 33
;
run ;

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

Наступний код показує, як обчислити вартість продажів із затримкою на 1, 2 і 3 дні:

 /*create new dataset that shows lagged values of sales*/
data new_data;
    set original_data;
    lag1_sales = lag(sales);
    lag2_sales = lag2(sales);
    lag3_sales = lag3(sales);
run ;

/*view new dataset*/
proc print data = new_data; 

Приклад функції зсуву SAS

У трьох нових стовпцях (lag1_sales, lag2_sales, lag3_sales) відображаються продажі з відставанням на один, два та три дні відповідно.

Приклад 2: зміщені значення, обчислені групою

Припустімо, у нас є такий набір даних у SAS, який показує загальний обсяг продажів, здійснених двома магазинами за послідовні дні:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 14
At 19
At 22
At 20
At 16
At 26
B40
B43
B29
B 30
B35
B 33
;
run ;

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

Ми можемо використовувати наступний код, щоб обчислити значення продажів із затримкою в 1 день на магазин:

 /*create new dataset that shows lagged values of sales by store*/
data new_data;
	set original_data;
	by store;
	lag1_sales = lag(sales);
	if first.store then lag1_sales = .;
run ;

/*view new dataset*/
proc print data = new_data; 

Компенсація SAS за групою

Значення в стовпці lag1_sales відображають значення продажів із затримкою в 1 день для кожного магазину.

Зауважте, що значення lag1_sales у рядку 7 порожнє, оскільки значення затримки в один день для цього рядка представляє значення продажів для іншого магазину.

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

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

Як нормалізувати дані в SAS
Як видалити дублікати в SAS
Як замінити пропущені значення на нуль в SAS

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

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