У меня есть следующий фрейм данных.Я хочу добавить два новых столбца с минимальной датой из столбца date1 и максимальной датой из столбца date2 для каждого идентификатора и подгруппы.
ID <- c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3)
subgroup <- c("a", "a", "b", "b", "a", "a", "b", "a", "a", "b", "b")
date1<- c("2017-12-01", "2017-10-01", "2017-10-01", "2017-10-01", "2017-01-01", "2017-02-01", "2017-01-15", "2017-12-01", "2017-10-01", "2017-10-01", "2017-10-01")
date2<- c("2018-12-01", "2018-10-01", "2018-10-01", "2018-10-01", "2019-01-01", "2019-02-01", "2019-01-15", "2018-12-01", "2018-10-01", "2018-10-01", "2018-10-01")
df<- data.frame(ID, subgroup, date1, date2)
df$date1 <- as_date(df$date1)
df$date2 <- as_date(df$date2)
df<- df %>% group_by(ID, subgroup) %>% mutate(min_date1 = if_else(date1 == min(date1), date1, as.Date(NA)))
df<- df %>% group_by(ID, subgroup) %>% mutate(max_date2 = if_else(date2 == max(date2), date2, as.Date(NA)))
ID subgroup date1 date2 min_date1 max_date2
1 a 2017-12-01 2018-12-01 NA 2018-12-01
1 a 2017-10-01 2018-10-01 2017-10-01 NA
1 b 2017-10-01 2018-10-01 2017-10-01 2018-10-01
1 b 2017-10-01 2018-10-01 2017-10-01 2018-10-01
2 a 2017-01-01 2019-01-01 2017-01-01 NA
2 a 2017-02-01 2019-02-01 NA 2019-02-01
2 b 2017-01-15 2019-01-15 2017-01-15 2019-01-15
3 a 2017-12-01 2018-12-01 NA 2018-12-01
3 a 2017-10-01 2018-10-01 2017-10-01 NA
3 b 2017-10-01 2018-10-01 2017-10-01 2018-10-01
3 b 2017-10-01 2018-10-01 2017-10-01 2018-10-01
Иногда минимальная дата не возвращается из-за большого числа строк сдубликаты.Как мне решить эту проблему?
Я хочу преобразовать этот фрейм данных в фрейм данных, как показано ниже.Я хочу иметь минимальную и максимальную дату для каждого удостоверения личности.
ID a_min_date1 a_max_date2 b_min_date1 b_max_date2
1 2017-10-01 2018-12-01 2017-10-01 2018-10-01
2 2017-01-01 2019-02-01 2017-01-15 2019-01-15
3 2017-10-01 2018-12-01 2017-10-01 2018-10-01
Спасибо.