Если у меня есть data.frame: dat = data.frame(shape1 = c('a', 'a', 'b', 'b'), date = c(today() - 0:3), value = c(1, 2, NA, 16))
Затем запустите:
dat %>% dplyr::group_by(shape1) %>% dplyr::slice(base::which.max(date[!is.na(value)]))
Почему в value
s есть NA
?
# A tibble: 2 x 3
# Groups: shape1 [2]
shape1 date value
<chr> <date> <dbl>
1 a 2018-10-02 1.00
2 b 2018-09-30 NA
Не должно[!is.na(value)]
исключить их?Это возвращает то, что я ищу
dat %>% dplyr::group_by(shape1) %>% dplyr::filter(!is.na(value)) %>% dplyr::slice(base::which.max(date))
# A tibble: 2 x 3
# Groups: shape1 [2]
shape1 date value
<chr> <date> <dbl>
1 a 2018-10-02 1.00
2 b 2018-09-29 16.0
Однако я не совсем понимаю, почему первый возвращает NA.