如何使用sas中的lag函数(附示例)


您可以使用SAS中的LAG函数来检索变量的移位值。

该函数使用以下基本语法:

 lag1_value = lag (value);

默认情况下, lag查找变量的前一个值。

但是,您可以使用lag2lag3lagn等。计算 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 天的滞后销售额值。

请注意,第 7 行中的lag1_sales值为空,因为该行一天的滞后值代表另一家商店的销售值。

其他资源

以下教程解释了如何在 SAS 中执行其他常见任务:

如何标准化 SAS 中的数据
SAS中如何删除重复项
SAS中如何用零替换缺失值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注