expand.grid()
Используйте expand.grid()
для создания всех комбинаций id
и date
.Кстати, обратите внимание, чтобы преобразовать вашу дату в класс Date
на as.Date()
, иначе это будет бессмысленная строка.
df %>% mutate(date = as.Date(date, "%m/%d/%y")) %>%
right_join(expand.grid(id = unique(.$id), date = unique(.$date))) %>%
mutate(value = coalesce(value, 0L)) %>%
arrange(id, date)
# id date value
# 1 1 2012-08-06 1
# 2 1 2012-08-07 0
# 3 1 2012-08-08 1
# 4 2 2012-08-06 0
# 5 2 2012-08-07 2
# 6 2 2012-08-08 1
Воспроизводимые данные
df <- structure(list(id = c(1L, 1L, 2L, 2L), date = c("8/06/12", "8/08/12",
"8/07/12", "8/08/12"), value = c(1L, 1L, 2L, 1L)), class = "data.frame", row.names = c(NA,
-4L))