【问题标题】:Count NAs per row in dataframe [duplicate]计算数据框中每行的 NA [重复]
【发布时间】:2016-10-14 13:20:32
【问题描述】:

我有具有批次 ID 的数据框以及对每个批次执行的六次测试的结果。数据如下所示:

batch_id  test1  test2  test3  test4  test5  test6
001       0.121     NA  0.340  0.877  0.417  0.662
002       0.229  0.108     NA  0.638     NA  0.574

(这个dataframe有几百行,每个batch_id只有一行)

我正在寻找一种方法来计算每个 batch_id(每行)有多少个 NA。我觉得这应该最多只需要几行 R 代码就可以做到,但我在实际编码时遇到了麻烦。 有什么想法吗?

【问题讨论】:

  • @BenBolker 一般来说,我的印象是,对最近帖子的回答通常比那些所谓的重复帖子更合适、更现代或更有效——尤其是如果重复帖子已经有几年了(不是这种情况这里)。但是,在这种特定情况下,我什至不确定我们是否正在处理重复问题,因为链接的问题专门要求 dplyr 解决方案,这与本文的 OP 不同。
  • 好的,虽然这个特定的问题不是那么老(今年 2 月)而且 答案(尤其是@windrunn3r.1990 的答案)有很多重叠。我/我们应该投票重新开放吗?
  • @BenBolker 我在搜索解决方案时没有看到您链接到的问题。 Justin 对这个问题的回答正是我所寻找的。我应该删除我的问题吗?
  • 不,只要有重复标记就可以了。
  • @BenBolker 好的。应该选择我发布的问题的答案之一吗? Tim Biegeleisen 发布了一个运行良好的解决方案,所以我觉得他应该得到一些功劳。

标签: r dataframe na


【解决方案1】:

您可以使用此命令计算每一行中的NAs:

rowSums(is.na(dat))

dat 是您的数据框的名称。

【讨论】:

  • 此解决方案非常出色且矢量化。谢谢。
  • 应该选择这个解决方案
【解决方案2】:

您可以在数据框中添加一个新列,其中包含每个 batch_idNA 值的数量:

df$na_count <- apply(df, 1, function(x) sum(is.na(x)))

【讨论】:

  • 谢谢。这样可行。我最终使用了这个,它有点简单:
    df$na_count &lt;- apply(is.na(df), 1, sum)
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
相关资源
最近更新 更多