请考虑以下示例:
structure(NA_real_, class = "Date")
## [1] NA
structure(Inf, class = "Date")
## [1] NA
is.na(structure(NA_real_, class = "Date"))
## [1] TRUE
is.na(structure(Inf, class = "Date"))
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)
两者都打印为NA.这是预期的行为还是这个错误?看到NA一些不会返回的东西是非常烦人TRUE的is.na().
我找到了一个组内的最小日期.很多时候,该组仅包括缺少日期(在这种情况下,我更喜欢NA分配的东西).
在NA小号似乎正确分配,但他们没有回应is.na(),因为我期望的那样. 当单元格显示为时NA,is.na()输出意外为FALSE.
library(magrittr)
ds_visit <- tibble::tribble(
~subject_id, ~date,
1L, as.Date("2017-01-01" ),
1L, as.Date("2017-02-01" ),
2L, as.Date(NA_character_),
2L, as.Date("2017-01-02" ),
3L, as.Date(NA_character_),
3L, as.Date(NA_character_),
4L, as.Date(NA_character_),
4L, as.Date(NA_character_)
)
ds_subject <- ds_visit %>%
# as.data.frame() %>%
dplyr::group_by(subject_id) %>%
dplyr::mutate(
date_na = is.na(date), # Works as expected
date_min = min(date, na.rm=T), # Works as expected
date_min_na = is.na(date_min) # Does NOT work as expected.
) %>%
dplyr::ungroup() # %>% as.data.frame()
Run Code Online (Sandbox Code Playgroud)
ds_visit …