У меня есть следующий набор данных:
individual number treatment
1 1 AAAA
1 2 BBBB
1 3 CCCC
1 4 EEEE
1 5 XXXX
1 7 WWWW
2 2 EEEE
2 3 AAAA
2 5 RRRR
Пациенты могут пройти до 7 процедур, но некоторые могут пройти только до 5 процедур (как в примере ниже индивидуальный_идентификатор = 2). Мне нужно добавить новые строки для каждого индивидуума до максимального количества обработок, которые они предпринимают (например, индивидуальный_ид = 1 до 7, индивидуальный_ид = 2 до 5) с обработкой = NA. Я хотел бы что-то вроде этого:
individual_id number treatment
1 1 AAAA
1 2 BBBB
1 3 CCCC
1 4 EEEE
1 5 XXXX
1 6 NA
1 7 WWWW
2 1 NA
2 2 EEEE
2 3 AAAA
2 4 NA
2 5 RRRR
Может кто-нибудь посоветовать самый быстрый способ сделать это?
Я не могу поделиться своими данными, но это составленный набор данных, который точно такой же, но меньшего размера и виртуальные данные:
> dput(df)
structure(list(individual_id = c(21L, 21L, 21L, 21L, 21L, 21L,
22L, 22L, 22L, 22L, 22L, 22L, 23L, 23L, 23L, 23L, 23L, 23L, 24L,
24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 25L, 25L,
25L, 25L, 25L, 25L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L,
26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L,
26L, 26L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L, 27L,
27L), number = c(2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 7, 7, 7,
7, 7, 7, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4), treatment = structure(c(3L,
3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L,
4L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 4L,
4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("Adalimumab", "Etanercept",
"Infliximab", "Rituximab"), class = "factor")), row.names = c(NA,
-72L), class = "data.frame")