R - 计算连续日期的最大数量

arn*_*d-c 3 r dataframe dplyr tibble

我正在尝试按组计算连续日期的最大长度,但我很难得到它。我已经包含了一个类似布局的小标题的代码。

library(dplyr)

# construct sample tibble:
df <- tibble(
  key = rep(1:2, c(6,4)),
  Date = c(seq(as.Date('2016-12-17'), as.Date('2016-12-19'), '1 day'),
           seq(as.Date('2016-12-21'), as.Date('2016-12-23'), '1 day'),
           seq(as.Date('2017-05-18'), as.Date('2017-05-21'), '1 day'))          
)
Run Code Online (Sandbox Code Playgroud)

我试图用lag()添加标签(1)来表示时,有日期之间的间隙,再算上的最大长度0列中的使用rle,但这并不工作中连续的日期和差距的所有可能的配置keys

有没有办法按组返回最大连续日期数?

leb*_*nok 6

让我们首先创建一个函数,在给定向量的情况下找到最大连续天数:

gl <- function(x) {
  y <- c(unclass(diff(x)))  # c and unclass -- preparing it for rle
  r <- rle(y)
  with(r, max(lengths[values==1]))
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以用通常的 dplyrry 方式使用它:

df %>% group_by(key) %>% summarise(max.consecutive = gl(Date))

#  A tibble: 2 x 2
#     key max.consecutive
#   <int>           <int>
# 1     1               2
# 2     2               3
Run Code Online (Sandbox Code Playgroud)