如何在 R 中对向量中的连续日期进行分组?

Jed*_*Jed 5 r date vector

我下面有一个日期向量;

dates <- c("2018-05-16", "2018-07-20", "2018-06-25", "2018-06-26", "2018-07-21", "2018-07-22", "2018-05-17")
Run Code Online (Sandbox Code Playgroud)

我想将连续的日期分组在一起。这可以吗?

即我希望日期“2018-05-16”和“2018-05-17”在一组中,“2018-07-20”、“2018-07-21”和“2018-07-22”在另一组中最后是另一组中的“2018-06-25”和“2018-06-26”。

通过在网上进行一些研究,我发现我可能必须使用下面的代码;

dateGroups <- c(NA,diff(as.Date(dates))==1)
Run Code Online (Sandbox Code Playgroud)

不过我不确定。

akr*_*run 6

我们需要sort然后进行比较

dates1 <- sort(as.Date(dates))
split(dates1, cumsum(c(TRUE, diff(dates1) != 1)))
#$`1`
#[1] "2018-05-16" "2018-05-17"

#$`2`
#[1] "2018-06-25" "2018-06-26"

#$`3`
#[1] "2018-07-20" "2018-07-21" "2018-07-22"
Run Code Online (Sandbox Code Playgroud)

将上面的split变成a listof vectors。如果我们需要一个data.frame带有分组列的

df1 <- data.frame(dates1, group = cumsum(c(TRUE, diff(dates1) != 1)))
Run Code Online (Sandbox Code Playgroud)