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/