R-使用开始和结束日期计算一段时间内的项目数

Dav*_*e M 6 duration r dplyr

我想用开始日期和结束日期计算一段时间内的项目数.

一些样本数据

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吗?非常感谢.

Ric*_*ven 6

这样做会.您可以根据需要更改列名称.

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)

  • 请注意,“Var1”现在是一个因素,而不是日期。 (2认同)