r - 计算日期范围内有重叠和间隙的唯一天数

标签 r date dplyr

Group       Start            End             Days
A           5/12/2015        5/14/2015       3
A           5/12/2015        5/14/2015       3
B           1/1/2015         1/3/2015        3
B           1/1/2015         1/3/2015        3
H           1/8/2015         1/9/2015        2
H           1/8/2015         1/9/2015        2
H           1/13/2015        1/15/2015       3
H           1/7/2015         1/17/2015       3
H           1/12/2015        1/22/2015       7

我在上面附上了我的数据集的示例。我正在尝试计算 R 中每个组的唯一天数。对于某些观察,它非常简单,即 A 和 B。但是,有些组的天数重叠以及日期范围内的间隙不同,即 H.

我是否可以总结 R 中每个组的独特天数(没有重叠并考虑间隙)?即A和B将分别返回3天​​,H将返回11天。

Group   Count
A       3
B       3
H       16

我最好的猜测是使用 dplyr 和 summarize 函数,但是我无法理解任何解决方案。 任何帮助表示赞赏!谢谢

最佳答案

这是一个 dplyr 解决方案:

library(dplyr)

df %>%
    group_by(Group,rn = row_number()) %>%
    do(data.frame(.,Date = seq(as.Date(.$Start,format = '%m/%d/%Y'),
                               as.Date(.$End,format = '%m/%d/%Y'),
                               '1 day'))) %>%
    group_by(Group) %>%
    summarise(numDays = n_distinct(Date))

这个想法是创建一个新列,其中包含从开始到结束的日期序列,然后计算每组中唯一观察值的长度。

这给出:

   Group numDays
  (fctr)   (int)
1      A       3
2      B       3
3      H      16

关于r - 计算日期范围内有重叠和间隙的唯一天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195990/

相关文章:

r - 在两个 ggplot 直方图上显示均值和中值

R ggplot : How can I create conditional labeling for a continuous axis ticks

python - 在给定各种条件的情况下,如何更改 pandas 数据框中日期的年份?

将多列中的行 id 的值替换为 dplyr case_when

r - 光栅和点的单色键 Levelplot R

r - 使用 DiagrammeR 和 Xaringan 演示文稿居中图形

ios - 使用重复规则 iOS 设置带有到期日期的提醒

java - 在android中根据日期查找一天

r - 使用 dplyr 按最后一列对数据框进行排序

r - 无法在 R 中加载包