统计指定日期范围内的人数

时间:2016-11-28 23:53:44

标签: r datetime as.date

我有一个包含个人的df'到来&出发日期和他们的总逗留时间(洛杉矶):

    arrive <- as.Date(c("2016/08/01","2016/08/03","2016/08/03","2016/08/04"))
    depart <- as.Date(c("2016/08/02","2016/08/07","2016/08/04", "2016/08/06"))
    people <- data.frame(arrive, depart)
    people$los <- people$depart - people$arrive
    View(people)

...和另一个包含start&amp; amp;的df结束日期。

    start <-seq(from=as.Date("2016/08/01"), to=as.Date("2016/08/08"), by="days")
    end <-seq(from=as.Date("2016/08/01"), to=as.Date("2016/08/08"), by="days") 
    range <- data.frame(start, end)
    View(range)

如何添加列范围$ census来计算每天有多少人?对于我的例子,我正在寻找的值如下:

range$census <- c(1,1,2,3,2,2,1,0)

我不确定如何对从一个df到另一个不同长度的df的值应用计算。这是我到目前为止所尝试的内容:

    people$count <- 1 
    range$census <- sum(people$count[people$arrival <= range$start & people$depart >= range$end])

注意:在上面的示例中,开始/结束日期是同一天,但我还需要查看更大的范围,其中开始/结束日期将是一个月或一年。

1 个答案:

答案 0 :(得分:1)

为什么你需要结束&#39;列范围?

这将有效 -

range$count <- rep(0, nrow(range))
sapply(seq(nrow(people)), function(x) 
       {
        range$count <<- range$count + range$start %in%
                        seq(people[x, "arrive"], people[x, "depart"], by = "day")
       })