如何使用sas中的lag函数(附示例)
您可以使用SAS中的LAG函数来检索变量的移位值。
该函数使用以下基本语法:
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;
三个新列(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;
lag1_sales列中的值显示每个商店 1 天的滞后销售额值。
请注意,第 7 行中的lag1_sales值为空,因为该行一天的滞后值代表另一家商店的销售值。
其他资源
以下教程解释了如何在 SAS 中执行其他常见任务: