如何使用 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 中执行其他常见计算:

如何使用 dplyr 计算运行总和
如何在R中按组计算总和
如何计算R中每组的平均值

添加评论

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