计数指定日期范围内在场的人(Count people present within specifie

2019-09-26 14:34发布

我有一个包含一个DF个人的到来和离开的日期和逗留(LOS)的总长度:

    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)

...和含开始和结束日期另一种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)

如何添加一列范围$人口普查来算,每天有多少人在场? 在我的例子中,值我正在寻找将如下所示:

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])

注:例如,开始在上面/结束日期是同一天,但我也需要看大的范围,其中开始/结束日期是一个月或一年分开。

Answer 1:

为什么你需要在范围内“结束”列?

这将与工作

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")
       })


文章来源: Count people present within specified date range