有关如何使用dplyr
在数据框上应用函数的方法,我只保留具有任何缺失值的行吗?
答案 0 :(得分:2)
这是一个(不是dplyr
)解决方案:
df[rowSums(is.na(df)) > 0,]
# X1 X2 X3 X4 X5
#1 NA NA 11 16 21
#3 3 8 NA 18 23
#5 5 10 15 20 NA
或者按照MrFlick的建议:
df[!complete.cases(df),]
m <- matrix(1:25, ncol = 5)
m[c(1,6,13,25)] <- NA
df <- data.frame(m)
df
# X1 X2 X3 X4 X5
#1 NA NA 11 16 21
#2 2 7 12 17 22
#3 3 8 NA 18 23
#4 4 9 14 19 24
#5 5 10 15 20 NA
答案 1 :(得分:2)
使用@ DJack的示例数据here,我们可以使用dplyr
在filter_all
中执行此操作。 filter_all
会引用all_vars
或any_vars
中引用的参数并将其应用于所有列。在这里,我们会在任何列中保留为TRUE
返回is.na
的任何行。
m <- matrix(1:25, ncol = 5)
m[c(1, 6, 13, 25)] <- NA
df <- data.frame(m)
library(dplyr)
df %>%
filter_all(any_vars(is.na(.)))
#> X1 X2 X3 X4 X5
#> 1 NA NA 11 16 21
#> 2 3 8 NA 18 23
#> 3 5 10 15 20 NA
由reprex package(v0.2.0)创建于2018-05-08。
答案 2 :(得分:1)
我不知道如何使用dplyr解决这个问题,但这可能会有所帮助:
首先,我创建了这个df:
df <- tribble( ~a , ~b, ~c,
1 , NA , 0,
2 , 0 , 1,
3 , 1 , NA,
4 , 1 , 0
)
然后,这将只返回NA:
的行df[!complete.cases(df),]
查看更多: Subset of rows containing NA (missing) values in a chosen column of a data frame