У меня есть следующие dataframes:R: последовательность дней между датами
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
То, что я хочу сделать это, для каждой даты в dataframe Alldays, рассчитать количество договоров аренды, которые в действительности. например если есть 4 договора аренды с датой начала < = 2015-01-01 и дата окончания> = 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', но я до сих пор не знаю, как использовать эту функцию: \ – MichaelChirico