按组在日期之间插入行

New*_*ias 4 r date dataframe

我想按组在两个日期之间插入行.我这样做的方式是如此复杂,以至于我通过最后一次观察结转并然后合并来插入缺失值.我想知道有没有更简单的方法来实现它.

# sample data 
user<-c("A","A","B","B","B") 
dummy<-c(1,1,1,1,1)
date<-as.Date(c("2017/1/3","2017/1/6","2016/5/1","2016/5/3","2016/5/5"))
dt<-data.frame(user,dummy,date) 

  user dummy       date
1    A     1 2017-01-03
2    A     1 2017-01-06
3    B     1 2016-05-01
4    B     1 2016-05-03
5    B     1 2016-05-05
Run Code Online (Sandbox Code Playgroud)

期望的输出

在此输入图像描述

WeN*_*Ben 8

通过使用dplyrtidyr:)(一线解决方案)

library(dplyr)
library(tidyr)
dt %>% group_by(user) %>% complete(date=full_seq(date,1),fill=list(dummy=0))
# A tibble: 9 x 3
# Groups:   user [2]
    user       date dummy
  <fctr>     <date> <dbl>
1      A 2017-01-03     1
2      A 2017-01-04     0
3      A 2017-01-05     0
4      A 2017-01-06     1
5      B 2016-05-01     1
6      B 2016-05-02     0
7      B 2016-05-03     1
8      B 2016-05-04     0
9      B 2016-05-05     1
Run Code Online (Sandbox Code Playgroud)