如果两个变量的值为na,则在R中的数据删除行以删除行



我想从数据集中删除两个列中NA的行。如果一行在任一列中具有非NA值,我想保留它。我该怎么做?

您可以做这个

library(tidyverse)
df <- data.frame(a = c(2, 4, 6, NA, 3, NA),
             b = c(5, 4, 8, NA, 6, 7))
df1 <- df %>%
  filter(is.na(a) == FALSE | is.na(b) == FALSE)

您得到:

> df1
   a b
1  2 5
2  4 4
3  6 8
4  3 6
5 NA 7

这是base R的一些建议。通过数据集的列循环,将其转换为逻辑向量,并通过将每个相应元素与Reduce进行比较,否定输出并将数据集进行了比较,并将数据集折叠为逻辑向量

df[!Reduce(`&`, lapply(df, is.na)),]

或将逻辑矩阵(!is.na(df))转换为逻辑vector以子集

df[rowSums(!is.na(df))>0,]

数据

df <- data.frame(a = c(2, 4, 6, NA, 3, NA),
         b = c(5, 4, 8, NA, 6, 7))

最新更新