Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的日期计数_R_Date_Dplyr_Counting - Fatal编程技术网

R中的日期计数

R中的日期计数,r,date,dplyr,counting,R,Date,Dplyr,Counting,我有一个df,变量名如下 id indexDate eventDate1 eventDate2 V1 V2 V3 ....... V365 对于日期范围(eventDate1-indexDate)到(eventDate2-indexDate),我想在V1到V365列中标记发生的日期 每个V表示索引后的天数 例如: 如果: 索引日期为2017年1月1日 事件日期1是2017年1月3日(=第2天) eventDate2是2017年1月5日(=第4天), 然后: V2-V4将被分配一个值1,其余V~

我有一个
df
,变量名如下

id indexDate eventDate1 eventDate2 V1 V2 V3 ....... V365
对于日期范围
(eventDate1-indexDate)
(eventDate2-indexDate)
,我想在
V1到V365列中标记发生的日期

每个
V
表示索引后的天数

例如:

如果:
索引日期为2017年1月1日

事件日期1是2017年1月3日(=第2天)

eventDate2是2017年1月5日(=第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)

为了让某件事情变得更好,它需要与其他事情进行比较。你能展示一下你试过的吗?你能提供一个可复制的数据集供人们尝试吗?也许我不清楚,但我目前没有解决方案。谢谢你的帮助!
dates %>% select(`1`, `2`, `3`)