Скажите, что у меня есть такой набор данных:
Object date date_data
1: N <NA>
2: A <NA>
3: A <NA>
4: A 2020-01-01 something
5: B <NA>
6: B <NA>
7: B 2020-01-01 something
8: C <NA>
9: C <NA>
10: C 2020-01-01 something
Генерируется
example <- data.table(Object = rep(LETTERS[1:3], each=3), date = as.Date(rep(c(NA,NA,"2020-01-01"),3)), date_data = rep(c("","","something")))
example <- rbind(list(Object="N", date=as.Date(NA), date_data = ""), example)
Я знаю, что могу заполнить пропущенные даты для каждой группы, используя nafill:
example[, date:= nafill(date,"nocb"), by=Object]
Object date date_data
1: N <NA>
2: A 2020-01-01
3: A 2020-01-01
4: A 2020-01-01 something
5: B 2020-01-01
6: B 2020-01-01
7: B 2020-01-01 something
8: C 2020-01-01
9: C 2020-01-01
10: C 2020-01-01 something
Я хотел бы заполнить столбец date_data так же, как столбец даты. Я не могу сделать это с параметром nafill объекта данных, так как он не работает со значениями символов.
Каким будет простой обходной путь? Я видел похожие вопросы, но не нашел ни одного, относящегося к той же проблеме
Редактировать
@ data.table Ронака Шаха для исходного примера. Но если я изменяю его на
example <- data.table(Object = c(rep("A",6), rep("B",3)), date = as.Date(rep(c(NA,NA,"2020-01-01"),3)), date_data = rep(c("","","something")))
example <- rbind(list(Object="N", date=as.Date(NA), date_data = ""), example)
Object date date_data
1: N <NA>
2: A <NA>
3: A <NA>
4: A 2020-01-01 something
5: A <NA>
6: A <NA>
7: A 2020-01-01 something
8: B <NA>
9: B <NA>
10: B 2020-01-01 something
na.fill больше не работает, я получаю сообщение об ошибке: Поставлено 4 элемента для назначения группе 2 размера 6 в столбце «date_data». Длина RHS должна быть либо 1 (допустимы отдельные значения), либо точно соответствовать длине LHS. Если вы хотите sh «переработать» RHS, пожалуйста, явно используйте rep (), чтобы прояснить это намерение читателям вашего кода.