У меня есть продольные данные, и я хотел бы вставить новые строки на основе значений нескольких столбцов в существующих строках.
Для любого лица, когда есть разрыв между предыдущей датой выпуска и следующей датой поступления, я хотел бы добавить новую строку, которая имеет предыдущую дату выпуска в качестве даты допуска и следующую дату приема в качестве даты выпуска, поэтому нет "пробелов". Если у окончательного наблюдения человека есть дата выпуска, я также хотел бы добавить новую строку с предыдущей датой выпуска в качестве даты допуска и NA для даты выпуска.
Я думаю, что для этого может потребоваться data.table или dplyr add_row, но я не знаю как. Другие SO вопросы, которые я видел, основывались на количестве строк в группе или добавляли новые строки до / после каждой существующей строки. Если бы я мог понять, как вставить строки в правильные места, я думаю, что я мог бы использовать функции запаздывания и опережения dplyr, чтобы заполнить правильные даты.
Вот некоторые примеры данных:
myData <- data.frame(ID = c(2, 2, 2, 3, 3, 4, 5, 5, 5, 5),
TERM_TYPE = c("Parole", "Prison", "Parole",
"Parole", "Prison", "Parole",
"Parole", "Prison", "Parole", "Prison"),
ADMISSION_DATE = c("2006-10-15", "2008-09-15", "2009-01-15",
"2006-01-15", "2006-12-15", "2006-12-15",
"2006-04-15", "2013-01-15", "2013-12-15", "2015-01-15"),
RELEASE_DATE = c("2008-09-15","2009-01-15", "2010-12-15",
"2006-10-15", NA, "2008-06-15",
"2010-01-15", "2013-12-15", "2015-01-15", NA),
stringsAsFactors = FALSE)
Я бы так выглядела:
ID TERM_TYPE ADMISSION_DATE RELEASE_DATE
1 2 Parole 2006-10-15 2008-09-15
2 2 Prison 2008-09-15 2009-01-15
3 2 Parole 2009-01-15 2010-12-15
4 2 Not supervised 2010-12-15 <NA>
5 3 Parole 2006-01-15 2006-10-15
6 3 Prison 2006-10-15 <NA>
7 4 Parole 2006-12-15 2008-06-15
8 4 Not supervised 2008-06-15 <NA>
9 5 Parole 2006-04-15 2010-01-15
10 5 Not supervised 2010-01-15 2013-01-15
11 5 Prison 2013-01-15 2013-12-15
12 5 Parole 2013-12-15 2015-01-15
13 5 Prison 2015-01-15 <NA>