这是group_by和lead / lag中的错误吗?

时间:2016-09-21 06:03:42

标签: r dplyr

示例:

library(dplyr) # version 0.4.3

df <- 
    data.frame(hour = 0:11, minutes = runif(12, 0, 59), count = rpois(12, 3)) %>%
    arrange(hour, minutes)

df %>%
    group_by(hour) %>%
    mutate(diff = count - lag(count, default = max(count)))

引发错误:

Error: expecting a single value

以下引发了不同的错误:

> df %>%
+     group_by(hour) %>%
+     mutate(diff = count - lag(count, default = count))
Error: not compatible with requested type

我觉得两者都应该有效,答案应该是包含diff列零的数据框。这是因为每个组只有一行,我希望默认的不存在的行值是该组中的最大计数。

1 个答案:

答案 0 :(得分:2)

第一个错误似乎是特定于版本的,但我们可以通过选择first观察&#39;计数&#39;来删除第二个错误。或last一个。

df %>%
   group_by(hour) %>%
   mutate(diff = count - lag(count, default = first(count)))