如何保留所有具有NA的列的所有行

时间:2018-05-08 20:03:48

标签: r

有关如何使用dplyr在数据框上应用函数的方法,我只保留具有任何缺失值的行吗?

3 个答案:

答案 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,我们可以使用dplyrfilter_all中执行此操作。 filter_all会引用all_varsany_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