【发布时间】:2018-10-02 17:56:03
【问题描述】:
如果我有一个 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中有NAs?
# 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 感到困惑。
【问题讨论】: