Как использовать функцию LAG в SAS (с примерами)

Как использовать функцию LAG в SAS (с примерами)

Вы можете использовать функцию LAG в SAS для получения запаздывающих значений некоторой переменной.

Эта функция использует следующий базовый синтаксис:

lag1_value = lag (value);

По умолчанию задержка находит предыдущее значение некоторой переменной.

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

В следующих примерах показано, как использовать функцию запаздывания на практике.

Пример 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 ;
A 14
A 19
A 22
A 20
A 16
A 26
B 40
B 43
B 29
B 30
B 35
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 пусто, поскольку значение с задержкой на 1 день для этой строки представляет собой значение продаж для другого магазина.

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.