【问题标题】:Locate index of rows in a dataframe that have the value of NA在数据框中找到值为 NA 的行的索引
【发布时间】:2013-11-22 14:52:27
【问题描述】:

假设我们有以下数据框:

>  dataset1
      x
  1   1
  2   2
  3   3
  4   NA
  5   5

我想提出一个 R 命令来计算包含“NA”值的 1 列数据帧的行索引。更具体地说,在上面的 dataset1 示例中,此类命令将返回 4 - 因为“NA”出现在数据帧的第 4 行。我怎样才能做到这一点?谢谢!

【问题讨论】:

  • ?which, ?is.na ...

标签: r dataframe na


【解决方案1】:

按照 Ben Bolker 的建议,您可以同时使用 whichis.na,如下所示:

> which(is.na(dataset1), arr.ind=TRUE)
  row col
4   4   1  # NA is in row 4 and column 1

【讨论】:

  • which(is.na(dataset1[[1]])),因为 OP 说他们想要答案“4”
【解决方案2】:

创建newdataset1,这是在删除dataset1中缺少列值的行后形成的表 使用-which(is.na)

   newdataset1<-dataset1[-which(is.na(dataset1$x)),]

【讨论】:

    【解决方案3】:

    使用tidyverse 生态系统中的函数的替代方法:

    > dataset1 %>%
         rowid_to_column() %>%
         filter(is.na(x))
      rowid  x
    1     4 NA
    

    【讨论】:

      【解决方案4】:

      此代码返回数据框,其中仅包含 your_dataframe 中具有空值的行 your_dataframe[unique(which(is.na(your_dataframe), arr.ind=TRUE)[,1]),]

      或使用 dplyr

      your_dataframe %>% dplyr::setdiff(., na.omit(.))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 2021-02-22
        • 2022-01-17
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        相关资源
        最近更新 更多