在下面的示例中,如果我对 df 执行 na.omit,那么它会忽略 d 的值为 10 和 12 的行。
有没有办法执行 na.omit ,条件是 c 列和 d 列都必须有 NA 才能省略整行?也就是说,我在 c 列中仍然会有 2 个 NA,因为 a、b 和 d 有其数据。
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
c <- c(0.1, 3, 5, NA, NA, NA, NA, NA, NA, NA)
d <- c(3, 6, 9, 10, 12, NA, NA, NA, NA, NA)
df <- as.data.frame(cbind(a, b, c, d))
df
na.omit(df)
这是一种基本的 R 方法,通过使用
[
子集函数和
一个合乎逻辑的陈述。 na.omit() 的工作方式与文档中的设计和描述完全一致:“na.omit 返回删除了不完整案例的对象。”
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
c <- c(0.1, 3, 5, NA, NA, NA, NA, NA, NA, NA)
d <- c(3, 6, 9, 10, 12, NA, NA, NA, NA, NA)
df <- data.frame(a, b, c, d)
df[!(is.na(df$c) & is.na(df$d)),]