我想计算由日期向量定义的每个时期内发生的所有事件。向量表示每个时期的第一天。结果应该是与输入向量长度相同且出现次数相同的向量。
我想出了一个非常低效的“循环”解决方案(见下文)。我想知道是否有任何方法可以更快地处理相同的任务。
events <- c("2000-01-05", "2000-02-08", "2000-04-09", "2000-02-08", "2000-03-13", "2000-03-13")
# Create vector of dates (in this case 52, 7 days periods)
week_vector = as.Date("2000-01-01")
i <- 1; N <- 51
while (i <= N) {
week_vector = append(week_vector, as.Date(week_vector[i] + 7))
i <- i + 1
}
i <- 1; N <- length(week_vector)
while (i <= N) {
occurrences_by_week <- sum(events >= week_vector[i] & events < week_vector[i] + 7)
}
我最初提出了这个解决方案(使用rollapply
zoo 包)。但是由于rollapply
我无法定义我希望开始对事件进行分组的日期:
frequency <- as.data.frame(table(as.Date(events)))
frequency.zoo <- read.zoo(frequency)
frequency.zoo.week <- rollapply(frequency.zoo, 7, sum, by = 7)