我一直在尝试使用 dplyr 过滤 R 中的任何缺失值,但我似乎没有得到正确的结果。任何领导将不胜感激。
library(dplyr)
library(tibble)
set.seed(2021)
testdata <- tibble(
a1 = c(10, 12, NA, 10, 13),
a2 = c("Test", "Test1", "Test 2", NA, NA),
a3 = c(NA, "Test 10", "Test 2", NA, "Test 4"),
a4 = rbinom(5, 10, 0.5)
)
testdata2 <- testdata %>%
filter(across(.cols = everything(), ~any_vars(is.na(.))))
Run Code Online (Sandbox Code Playgroud)
如果您要这样做dplyr,您可以使用函数if_all/if_any来执行此操作。
要选择至少有一个缺失值的行 -
library(dplyr)
testdata %>% filter(if_any(everything(), is.na))
# a1 a2 a3 a4
# <dbl> <chr> <chr> <int>
#1 10 Test NA 5
#2 NA Test 2 Test 2 6
#3 10 NA NA 5
#4 13 NA Test 4 6
Run Code Online (Sandbox Code Playgroud)
选择没有缺失值的行 -
testdata %>% filter(if_all(everything(), Negate(is.na)))
# a1 a2 a3 a4
# <dbl> <chr> <chr> <int>
#1 12 Test1 Test 10 6
Run Code Online (Sandbox Code Playgroud)