NA 仅忽略具有 NA 的选择行

问题描述 投票:0回答:1

在下面的示例中,如果我对 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
1个回答
0
投票

这是一种基本的 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)),]

© www.soinside.com 2019 - 2024. All rights reserved.