考虑以下数据:
library(tidyverse)
df <- tibble(col1 = c("A", "", NA),
col2 = 5:7)
#> # A tibble: 3 x 2
#> col1 col2
#> <chr> <int>
#> 1 "A" 5
#> 2 "" 6
#> 3 NA 7我试图用下面的代码从上面的数据帧中筛选出空白
df %>% filter(col1 != "")
#> # A tibble: 1 x 2
#> col1 col2
#> <chr> <int>
#> 1 A 5为什么除空白之外还删除NA?我在筛选器调用中没有包括df %>% filter(!is.na(col1))、drop_na()、na.exclude()等等,因此我认为不应该将NA行从数据帧中筛选出来。
如何过滤掉空白,但保留NA?也希望有一种解释。谢谢。
发布于 2020-05-28 16:37:56
这是默认行为:r根本不知道NA == ''是TRUE还是FALSE
NA == ""
[1] NA 因此,第三行不返回。如果您也想包括NA,那么有几个工作回合:
df %>% filter(coalesce(col1, "x") != "")
df %>% filter(col1 != "" | is.na(col1)就我个人而言,我更喜欢第一种方法:coalesce用默认值(这里是"x")替换NA,然后检查替代值是否等于""。
发布于 2020-05-28 16:31:03
我不知道为什么会发生这种情况,但你为什么不直接把一个值放进NA's,去掉空格,然后再把这些值放进NA's
https://stackoverflow.com/questions/62069747
复制相似问题