【问题标题】:Omit numerous NA values [duplicate]省略许多 NA 值 [重复]
【发布时间】:2025-11-21 21:00:01
【问题描述】:

我有DF 喜欢:

A  B  C  D | Va
NA 2  NA 3 | x
1  2  3  4 | x
NA 5  5  2 | x 
4  3  2  1 | x

需要它是这样的:

A  B  C  D | Va
1  2  3  4 | x
4  3  2  1 | x

的目的是计算Va 的值。我之前已经按照一些规则计算过它(让我们将它命名为Vb),但它的质量很低。因此,我需要计算Va 以获得更好的值,我可以(行中没有NA)。然后我需要得到V 向量,其中Va 计算某些行和Vb 其他任何地方。我需要的插图:

Va  Vb  ->  V
NA  2   ->  2
1   2   ->  1
NA  2   ->  2
1   2   ->  1

所以,我有两个问题:

1) 如何将我原来的 DF 重新调整为某个 newDF,其中每一行相对于 DF 中的原始索引没有 NA?

2) 我尝试用Va[is.na(Va)] <- Vb 测试NA 替换为Vb 值(低质量模型)。它甚至可以处理有关不同长度/替换次数的消息。可以用它来获得我需要的东西还是有更好的东西?

【问题讨论】:

  • 你不妨使用函数:complete.cases
  • 你也可以使用:na.omit
  • na.omit(DF) 可以。示例:na.omit(head(airquality, 10))
  • 第二个问题请看ifelse()DF$V <- ifelse(is.na(DF$Va), DF$Vb, DF$Va)
  • 另请参阅this answer,了解第二个问题的几种替代方法。

标签: r


【解决方案1】:

我们可以使用rowSumsis.na 对“DF”的行进行子集化

DF[!rowSums(is.na(DF)),]
#   A B C D Va
#2 1 2 3 4  x
#4 4 3 2 1  x

【讨论】: