我下面有一个日期向量;
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)
不过我不确定。
我们需要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)