我想使用它们的开始和结束日期随着时间的推移计算项目的数量。
一些样本数据
START <- as.Date(c("2014-01-01", "2014-01-02","2014-01-03","2014-01-03"))
END <- as.Date(c("2014-01-04", "2014-01-03","2014-01-03","2014-01-04"))
df <- data.frame(START,END)
df
给
START END
1 2014-01-01 2014-01-04
2 2014-01-02 2014-01-03
3 2014-01-03 2014-01-03
4 2014-01-03 2014-01-04
一个表格显示了这些项目随时间的计数(基于它们的开始和结束时间)如下:
DATETIME COUNT
2014-01-01 1
2014-01-02 2
2014-01-03 4
2014-01-04 2
这可以使用 R 来完成,尤其是使用 dplyr 吗?非常感谢。
最佳答案
这样就可以了。您可以根据需要更改列名称。
as.data.frame(table(Reduce(c, Map(seq, df$START, df$END, by = 1))))
# Var1 Freq
# 1 2014-01-01 1
# 2 2014-01-02 2
# 3 2014-01-03 4
# 4 2014-01-04 2
如评论中所述,
Var1
在上述解决方案中,现在是一个因素,而不是日期。要将日期类保留在第一列中,您可以对上述解决方案做更多的工作,或者使用 plyr::count
而不是 as.data.frame(table(...))
library(plyr)
count(Reduce(c, Map(seq, df$START, df$END, by = 1)))
# x freq
# 1 2014-01-01 1
# 2 2014-01-02 2
# 3 2014-01-03 4
# 4 2014-01-04 2
关于R- 使用开始和结束日期计算一段时间内的项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26290314/