我有一个大数据集(2300 obs x 9700 var),其中我只想要所有变量(列),其中所有样本(行)的值都高于10000
。
我尝试了很多代码,例如:
subset <- df[,apply(df,1,function(z) !all(z<10000))]
subset<- df[,df> 10000]
但他们没有工作。 RowMeans
不起作用,因为平均值可能是< 10000
,但某些行可能是>10000
。
有人提示如何解决这个问题?
答案 0 :(得分:1)
尝试此操作过滤掉所有值为>10000
的所有行:
df[rowSums(df>10000)==ncol(df),]
# a b c
#4 14139 127746 10911
#7 11582 73952 10821
过滤掉所有值为>10000
的所有列:
df[,colSums(df>10000)==nrow(df)]
# [1] 40004 105808 70261 127746 60177 134365 73952 86584 87551 67781
数据强>
df <- structure(list(a = c(13773, 8680, 4854, 14139, 3106, 3044, 11582,
9475, 728, 4666), b = c(40004, 105808, 70261, 127746, 60177,
134365, 73952, 86584, 87551, 67781), c = c(1913, 2092, 14468,
10911, 14414, 8015, 10821, 12636, 12320, 1266)), .Names = c("a",
"b", "c"), row.names = c(NA, -10L), class = "data.frame")
# a b c
# 1 13773 40004 1913
# 2 8680 105808 2092
# 3 4854 70261 14468
# 4 14139 127746 10911
# 5 3106 60177 14414
# 6 3044 134365 8015
# 7 11582 73952 10821
# 8 9475 86584 12636
# 9 728 87551 12320
# 10 4666 67781 1266