我想从我的数据集中删除两列中NA的所有行。如果某一行在任一列中都有非NA值,我想保留它。我该怎么做?
答案 0 :(得分:2)
你可以这样做
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
答案 1 :(得分:-1)
以下是一些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))