r - 如何从包含n * NA的数据框中删除行

标签 r filter merge rows na

我有许多大型数据集,共有〜10列和〜200000行。并非所有列都包含每一行的值,尽管至少一列必须包含要存在的行的值,但我想为行中允许的NA设置一个阈值。

我的数据框看起来像这样:

 ID q  r  s  t  u  v  w  x  y  z
 A  1  5  NA 3  8  9  NA 8  6  4
 B  5  NA 4  6  1  9  7  4  9  3 
 C  NA 9  4  NA 4  8  4  NA 5  NA
 D  2  2  6  8  4  NA 3  7  1  32 

我希望能够删除包含2个以上包含NA的单元格的行以获取
ID q  r  s  t  u  v  w  x  y  z
 A 1  5  NA 3  8  9  NA 8  6  4
 B 5  NA 4  6  1  9  7  4  9  3 
 D 2  2  6  8  4  NA 3  7  1  32 
complete.cases删除包含任何NA的所有行,并且我知道可以删除某些列中包含NA的行,但是有一种方法可以对其进行修改,以使它不确定包含NA的列,但是总共有多少呢?

或者,通过使用以下方法合并几个数据框来生成此数据框
    file1<-read.delim("~/file1.txt")
    file2<-read.delim(file=args[1])

    file1<-merge(file1,file2,by="chr.pos",all=TRUE)

也许合并功能可以更改?

谢谢

最佳答案

使用rowSums。要从数据框架(df)中删除正好包含n个NA值的行,请执行以下操作:

df <- df[rowSums(is.na(df)) != n, ]

或删除包含n个或更多NA值的行:
df <- df[rowSums(is.na(df)) < n, ]

在两种情况下,当然都需要用所需的数字替换n

关于r - 如何从包含n * NA的数据框中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116305/

相关文章:

php - 如何通过仅从第二个数组中获取与第一个数组具有相同键的值来合并两个数组?

database - 快速从CSV对DB表进行数据同步

SVN 合并 : "Target path does not exist"

r - 使用尚未在较新版本的 R 上更新的旧包

r - match.call() 返回一个函数或一个符号,但符号不能被 do.call() 使用

php - 删除插件的过滤器

openid - SSO,Facebook连接,用户个人资料合并

r - 在 data.table (R) 中按组高效生成随机变量

r - R 中的 Sprintf 不计算变音

elasticsearch - 搜索结果的ElasticSearch阈值