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

标签 r duration 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


       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/

相关文章:

r - 如何检查 R 是用哪些启动参数启动的

r - 按列和按行进行子集化?

r - 斯 PIL 曼等级相关

css - 修改 Bootstrap 模态转换

android - Android 中的 Toast 消息

R & dplyr 的 select 在各种转换后不删除列?

r - group_by(across(all_of(vars, YEARS))) - 按具有固定 YEAR 变量的变量分组

用下一个更高的因子水平替换因子值

c++ - 易于理解的两个UNIX时间戳之间的持续时间

r - 有条件地创建多个变量