在数据框中定位具有NA值的行的索引

26

假设我们有以下数据框:

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

我希望能够编写一个R命令,计算包含“NA”值的单列数据框的行索引。更具体地说,在上面的dataset1示例中,这样的命令将返回4——因为'NA'出现在数据框的第4行。我该如何实现?谢谢!


2
请查看?which?is.na等相关文档。 - Ben Bolker
4个回答

52

正如Ben Bolker所建议的那样,可以同时使用whichis.na,例如:

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

6
根据OP的说法,他们想要答案"4",所以应该使用which(is.na(dataset1[[1]])) - Ben Bolker

6

使用 tidyverse 生态系统中的函数的另一种方法:

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

1
创建一个名为newdataset1的数据表,该表是由从dataset1中删除具有缺失列值的行形成的。使用-which(is.na)
   newdataset1<-dataset1[-which(is.na(dataset1$x)),]

1
这段代码返回一个仅包含在你的数据框中存在空值的行的数据框:your_dataframe[unique(which(is.na(your_dataframe), arr.ind=TRUE)[,1]),] 或者使用dplyr: your_dataframe %>% dplyr::setdiff(., na.omit(.))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接