我有许多大型数据集,共有〜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/