【发布时间】:2020-08-21 15:27:41
【问题描述】:
我有一个包含 15,000 行和 350 列(1 列包含字符串,其余所有数字)的数据框,我想在其中删除所有整数列中包含低于某个数字的数字的行。
示例数据:
df1 <- data.frame(
ID = c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5"),
var1 = c(245, 2, 0.4, 34,1098),
var2 = c(908, 1, 54, 34,856),
var3 = c(0, 3, 650, 0,6)
)
threshold <- 3
> df1
ID var1 var2 var3
1 Gene1 245.0 908 0
2 Gene2 2.0 1 3
3 Gene3 0.4 54 650
4 Gene4 34.0 34 0
5 Gene5 1098.0 856 6
期望的输出:
> df1
ID var1 var2 var3
1 Gene1 245.0 908 0
3 Gene3 0.4 54 650
4 Gene4 34.0 34 0
5 Gene5 1098.0 856 6
Gene2(在所有列中包含低于 3 的数字)已消失。我怎样才能做到这一点?谢谢!
【问题讨论】:
-
df1[rowSums(df1[-1]<=3)!=ncol(df1[-1]), ]甚至subset(df1, rowSums(df1[-1]<=3)!=ncol(df1[-1])) -
谢谢,但这是计算这些行的总和。如果一行的值为 1,0,2,2 - 我仍然想完全删除该行,即使总和大于 3。还是我误解了?
-
请再看一遍代码。它不是对行求和,而是 ii 正在删除行中的所有值都小于 3 的行。如果是对行求和,则
1+2+3=6而不是 3。代码对生成的 TRUE、FALSE 值求和df[-1]<=3nd 不是单个值。这是正确的代码 -
知道了,完全是我的错。这实际上是非常简洁的代码,非常感谢!