R中的日期计数

Date counting in R

我有一个 df 变量命名如下

id indexDate eventDate1 eventDate2 V1 V2 V3 ....... V365

对于 (eventDate1 - indexDate)(eventDate2 - indexDate) 的日期范围,我想在 V1 to V365 列中标记出现的日期。

每个V代表天数post-indexDate.

例如:

如果:
indexDate is 1/1/2017
eventDate1 is 1/3/2017 (= Day 2)
eventDate2 is 1/5/2017 (= Day 4),

然后:

V2-V4 将被赋值为 1,V~ 的其余部分为 0。

如果有更好的方法,请随时告诉我!

谢谢。

这有效-

library(dplyr)
library(tidyr)

# Make fake data
dates <- data.frame(id = 1:10,
                    indexDate = rep(as.Date("17/01/01"), 10), 
                    eventDate1 = as.Date(paste0("17/01/", 1:10)),
                    eventDate2 = as.Date(paste0("17/01/", 16:25)))

# Step through this to understand what's going on
dates[rep(row.names(dates), 365), ] %>% 
  arrange(id) %>% 
  mutate(Day = rep(1:365, nrow(dates)),
         Flag = ifelse(Day <= as.numeric(eventDate2 - indexDate) & 
                         Day > as.numeric(eventDate1 - indexDate), 1, 0)) %>%
  # move to long format
  spread(Day, Flag)

我试着添加一个 paste0("V", Day),但传播结果是无序的。使用此列约定,您可以使用反引号 `.

引用各个列
dates %>% select(`1`, `2`, `3`)