Как выбрать вторую последнюю дату идентификатора? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть фрейм данных

abc<- children_info
child_id  custody_start   custody_end
1         01/01/2018      03/29/2018
1         04/15/2018      04/30/2018
1         05/01/2018      05/01/2018
2         05/26/2018      05/28/2018
2         05/29/2018      06/15/2018
2         06/16/2018      06/16/2018
3         03/22/2018      07/15/2019
3         01/09/2019      05/09/2019
3         06/09/2019      06/09/2019
4         03/15/2020      03/29/2020

конечный результат, которого я хочу достичь, -

child_id  custody_start   custody_end
1         04/15/2018      05/01/2018
2         05/29/2018      06/16/2018
3         01/09/2019      06/09/2019
4         03/15/2020      03/29/2020

Я пробовал этот код, но по какой-то причине он не выбирает нужные даты

dplyr::mutate(if_else(`custody_start`==`custody_end`,lag(as.Date(custody_start)),custody_start)) %>%

Любая помощь будет очень ценится

1 Ответ

1 голос
/ 30 марта 2020

Мы можем выбрать вторую последнюю custody_start дату и last custody_end дату для каждого child_id.

library(dplyr)
df %>%
  group_by(child_id) %>%
  summarise(custody_start = nth(custody_start, max(n() - 1,1)), 
            custody_end = last(custody_end))


#  child_id custody_start custody_end
#     <int> <fct>         <fct>      
#1        1 04/15/2018    05/01/2018 
#2        2 05/29/2018    06/16/2018 
#3        3 01/09/2019    06/09/2019 
#4        4 03/15/2020    03/29/2020 

данные

df <- structure(list(child_id = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
4L), custody_start = structure(c(1L, 5L, 6L, 7L, 8L, 10L, 4L, 
2L, 9L, 3L), .Label = c("01/01/2018", "01/09/2019", "03/15/2020", 
"03/22/2018", "04/15/2018", "05/01/2018", "05/26/2018", "05/29/2018", 
"06/09/2019", "06/16/2018"), class = "factor"), custody_end = structure(c(1L, 
3L, 4L, 6L, 8L, 9L, 10L, 5L, 7L, 2L), .Label = c("03/29/2018", 
"03/29/2020", "04/30/2018", "05/01/2018", "05/09/2019", "05/28/2018", 
"06/09/2019", "06/15/2018", "06/16/2018", "07/15/2019"), class = "factor")), 
class = "data.frame", row.names = c(NA, -10L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...