我想从数据集中删除两个列中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))