如何使用 dplyr 计算每组的偏移量
您可以使用以下语法使用dplyr包计算 R 中的组移位值:
df %>%
group_by(var1) %>%
mutate(lag1_value = lag(var2, n= 1 , order_by=var1))
注意: mutate()函数向包含延迟值的数据帧添加一个新变量。
以下示例展示了如何在实践中使用此语法。
示例:使用 dplyr 按组计算移位值
假设我们在 R 中有以下数据框,显示两个不同商店在不同日期的销售额:
#create data frame df <- data. frame (store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'), sales=c(7, 12, 10, 9, 9, 11, 18, 23)) #view data frame df blind sales 1 to 7 2 B 12 3 to 10 4 B 9 5 to 9 6 B 11 7 to 18 8 B 23
我们可以使用以下代码创建一个新列,用于显示每个商店的滞后销售值:
library (dplyr) #calculate lagged sales by group df %>% group_by(store) %>% mutate(lag1_sales = lag(sales, n= 1 , order_by=store)) # A tibble: 8 x 3 # Groups: store[2] store sales lag1_sales 1 to 7 NA 2 B 12 NA 3 to 10 7 4 B 9 12 5 to 9 10 6 B 11 9 7 to 18 9 8 B 23 11
以下是如何解释结果:
- lag1_sales的第一个值是NA ,因为商店 A 的销售额没有先前的值。
- lag1_sales的第二个值是NA ,因为商店 B 的销售额没有先前的值。
- lag1_sales的第三个值为7 ,因为它是商店 A 之前的销售值。
- lag1_sales的第四个值为12 ,因为它是商店 B 之前的销售值。
等等。
请注意,您还可以通过更改lag()函数中n的值来更改使用的滞后数。
其他资源
以下教程解释了如何在 R 中执行其他常见计算: