【发布时间】:2018-04-13 17:43:44
【问题描述】:
给定如下一组日期加上每个日期结束的 30 天间隔,我想计算该间隔内的日期数,例如,
library(lubridate)
library(dplyr)
df = data.frame(id = c(1, 2, 3, 4, 5, 6),
dates = as.Date(c('2017-01-15', '2017-01-17', '2017-02-01',
'2017-02-12', '2017-03-30', '2017-04-01')))
df <- df %>% mutate(interval = interval(dates - 30, dates))
使用
sum(x$dates %within% x$interval[5])
正确返回 1,因为只有一个日期落在第 5 个间隔内,但我想以矢量化方式对所有间隔执行此操作。任何建议表示赞赏。
【问题讨论】:
-
一种似乎可行的可能性是
f <- function(interval, date_vec) { sum(date_vec %within% interval) } df$dates_in_interval <- sapply(df$interval, f, df$dates) -
或
colSums(outer(df$dates, df$interval, `%within%`))。