У меня есть фрейм данных, который выглядит следующим образом:
ID <- c("A1","A1","A1","A1","A1","B1","B1","B1","B1")
Age <- c(0,1,2,3,4,0,1,2,3)
Date <- c("2006-05-03",NA,"2006-05-05",NA,"2006-05-07","2006-06-02",NA,"2006-06-04","2006-06-05")
Value1 <- c(6,6,6,6,6,4,4,4,4)
df
ID Age Date Value1
1 A1 0 2006-05-03 6
2 A1 1 <NA> 6
3 A1 2 2006-05-05 6
4 A1 3 <NA> 6
5 A1 4 2006-05-07 6
6 B1 0 2006-06-02 4
7 B1 1 <NA> 4
8 B1 2 2006-06-04 4
9 B1 3 2006-06-05 4
Каждый идентификатор имеет полную последовательность возраста (дней) разной длины, и я хотел бы заполнить отсутствующие даты, принадлежащие к значению возрастасоответственно.Для каждого идентификатора у меня всегда есть первая и последняя даты.
Я пытался
library(tidyr)
df1 <- df %>%
group_by(ID) %>%
complete(Date = seq(min(df$Date, na.rm = TRUE), max(df$Date, na.rm = TRUE), by ="days"))
, который работает для даты, но в то же время заменяет все другие значения в этой строке на NA.
Есть ли решение для заполнения Даты и сохранения всех других значений в строке?