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


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

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

 lag1_value = lag (value);

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

Однако вы можете использовать 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 ;
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

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

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