【发布时间】:2015-08-21 17:30:45
【问题描述】:
我有以下数据框:
AllDays
2012-01-01
2012-01-02
2012-01-03
...
2015-08-18
Leases
StartDate EndDate
2012-01-01 2013-01-01
2012-05-07 2013-05-06
2013-09-05 2013-12-01
我想要做的是,对于 allDays 数据框中的每个日期,计算有效的租约数量。例如如果有 4 个开始日期 = 2015-01-01 的租约,那么我想在该数据框中放置一个 4。
我有以下代码
for (i in 1:nrow(leases))
{
occupied = seq(leases$StartDate[i],leases$EndDate[i],by="days")
occupied = occupied[occupied < dateOfInt]
matching = match(occupied,allDays$Date)
allDays$Occupancy[matching] = allDays$Occupancy[matching] + 1
}
这可行,但由于我有大约 5000 个租约,因此大约需要 1.1 秒。有没有人有更有效的方法需要更少的计算时间? 感兴趣的日期只是当前日期,仅用于确保它不计算未来的租赁日期。
【问题讨论】:
-
所有日期是否都存储为
Date变量?似乎是foverlaps的东西,但我仍然不知道如何使用该功能:\