【问题标题】:NA's generated when subsetting data in R在 R 中对数据进行子集化时生成 NA
【发布时间】:2024-01-19 23:33:01
【问题描述】:

我遇到了这个问题,这让我发疯了。我尝试使用以下命令过滤 R 中的数据:

data <- data[data$v1 != "T",]

只要过滤后的数据包含所需的行数,这就会起作用。但是,由于“v1”包含 NA,过滤前所有 v1 = NA 的观察现在仅包含所有列中的 NA。

有人知道为什么会这样吗?

已经非常感谢了。

【问题讨论】:

  • 我们可以做data[data$v1 != "T" & !is.na(data$v1),]
  • 成功了!非常感谢!

标签: r filter subset na


【解决方案1】:

NA 无法与实际值进行比较。对于 NA,'is this equal to "T"' 的答案是 idk,因此整行变为 NA。避免这种情况的方法是按照@akrun 的建议排除 NA,或者如果您希望保留这些行,则显式查找 NA:

data[data$v1 != "T" | is.na(data$v1),]

【讨论】:

    最近更新 更多