我想用开始日期和结束日期计算一段时间内的项目数.
一些样本数据
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
Run Code Online (Sandbox Code Playgroud)
给
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
Run Code Online (Sandbox Code Playgroud)
显示这些项目的时间计数(基于其开始和结束时间)的表格如下:
DATETIME COUNT
2014-01-01 1
2014-01-02 2
2014-01-03 4
2014-01-04 2
Run Code Online (Sandbox Code Playgroud)
这可以用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
Run Code Online (Sandbox Code Playgroud)
如评论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
Run Code Online (Sandbox Code Playgroud)