Некоторые наблюдения в моих данных записаны в неправильную дату, и я хотел бы исправить это.
Мои данные выглядят так:
id <- c(1,1,1,2,2,2,2,2,2,2,3,3,3,3)
value <- c(NA,50,NA, 100, NA, NA, 75, NA, 150, NA, NA,80,100,NA)
type <- c("f",NA, "e", "f","e","e", NA, "e", NA, "e", "f", NA, NA, "e")
date <- as.Date(c("2019-01-10","2019-01-15","2019-02-01","2020-01-10","2020-02-10","2020-03-10","2020-03-18","2020-04-15","2020-06-01","2020-06-07","2020-07-01","2020-07-10","2020-11-25","2020-12-01"))
extra <- c(NA,222,NA, 333, NA, NA, 444, NA, 555, NA, NA, 666, 777, NA )
df1 <- data.frame(id, value, type, date, extra)
df1
id value type date extra
1 NA f 2019-01-10 NA
1 50 <NA> 2019-01-15 222
1 NA e 2019-02-01 NA
2 100 f 2020-01-10 333
2 NA e 2020-02-10 NA
2 NA e 2020-03-10 NA
2 75 <NA> 2020-03-18 444
2 NA e 2020-04-15 NA
2 150 <NA> 2020-06-01 555
2 NA e 2020-06-07 NA
3 NA f 2020-07-01 NA
3 80 <NA> 2020-07-10 666
3 100 <NA> 2020-11-25 777
3 NA e 2020-12-01 NA
Я хотел бы сгруппировать свои данные на основе "id".
Затем, если «тип» равен «NA», я бы хотел переместить наблюдения в «значение» и «дополнительные» в строку, ближайшую по времени (основанную на «дате»), которая имеет действительную «группу»" стоимость.
Итак, я хотел бы, чтобы мои данные выглядели так:
id <- c(1,1,2,2,2,2,2,3,3)
value <- c(50,NA, 100, NA, 75, NA, 150,80,100)
type <- c("f" ,"e", "f","e","e", "e", "e","f","e")
date <- as.Date(c("2019-01-10","2019-02-01","2020-01-10","2020-02-10","2020-03-10","2020-04-15","2020-06-07", "2020-07-01","2020-12-01"))
extra <- c(222,NA, 333,NA, 444, NA, 555, 666, 777)
df2 <- data.frame(id, value, type, date, extra)
df2
id value type date extra
1 50 f 2019-01-10 222
1 NA e 2019-02-01 NA
2 100 f 2020-01-10 333
2 NA e 2020-02-10 NA
2 75 e 2020-03-10 444
2 NA e 2020-04-15 NA
2 150 e 2020-06-07 555
3 80 f 2020-07-01 666
3 100 e 2020-12-01 777