删除在某些列中具有所有NA的行

道伊

假设您有一个9列的数据框。您要删除在5:9栏中具有所有NA的案例。如果1:4列中有NA,则根本不相关。

到目前为止,我已经找到了允许您删除在5:9的任何列中具有NA的行的函数,但是我特别需要仅删除在5:9的列中具有所有NA的那些行。

我编写了自己的函数来执行此操作,但是由于我有300k +行,因此速度非常慢。我想知道是否有更有效的方法?这是我的代码:

remove.select.na<-function(x, cols){
  nrm<-vector("numeric")
  for (i in 1:nrow(x)){
    if (sum(is.na(x[i,cols]))<length(cols)){
      nrm<-c(nrm,i)
    }
    #Console output to track the progress
    cat('\r',paste0('Checking row ',i,' of ',nrow(x),' (', format(round(i/nrow(x)*100,2), nsmall = 2),'%).'))
    flush.console()
  }
  x<-x[nrm,]
  rm(nrm)
  return(x)
}

其中x是数据帧,而cols是一个向量,其中包含应检查NA的列的名称。

雷特尔

这样一来就可以删除5到9之间所有列中带有NA的行。通过rowSums()与之结合is.na()很容易检查这5列中的所有条目是否为NA

x <- x[rowSums(is.na(x[,5:9]))!=5,]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从列表中的data.frames删除具有所有NA的行

删除第一行之后具有所有NA的所有行

在不是 NA 的最后一行之后删除所有具有所有 NA 值的行

na.omits删除所有列中具有NA的所有行,而不仅限于指定的列

除去第一列以外具有所有NA的行

如何删除在特定列中具有NA的DataFrame的所有行?

如何使用dplyr删除所有列中具有NA的行?

删除那些没有所有列值的行

如何删除SQL列中具有某些字符的行

删除所有列中具有相同值的行

删除所有列中具有相同值的行

选择仅在R中具有所有非零列的行

删除列中具有 NA 值的行

如何选择具有所有“列”值且具有相同值的行?

如何删除某个变量的所有具有 NA 的行

删除所有列中都具有NA的尾随(最后)行

R删除所有以字符串开头的列均具有NA的行

DataTables遍历表,并删除某些列中包含某些字符串的所有行

如何删除具有所有零值但不包含非零值的零的行

除去除指定列之外的所有列中具有NA的行

熊猫数据框,删除某些列中具有相同值的两行之间的行

熊猫在某些列中相对于其他列删除具有重复项的行

sql:如何删除某些列的所有行?

删除具有任何/所有NaN值的行/列

仅当所有 3 列都具有 NA 时,R 从 3 列中删除 NA 值

删除所有列值也是 NA 的 NA 行

如何从数据框中的具有字母数字值的列中删除除某些单词以外的所有单词?

如何选择具有相同 id 并在另一列中具有所有缺失值的行

选择具有所有IN列表引用的行