删除所有行的值小于10000的所有列

时间:2016-09-23 15:06:45

标签: r

我有一个大数据集(2300 obs x 9700 var),其中我只想要所有变量(列),其中所有样本(行)的值都高于10000。 我尝试了很多代码,例如:

subset <- df[,apply(df,1,function(z) !all(z<10000))]  
subset<- df[,df> 10000]

但他们没有工作。 RowMeans不起作用,因为平均值可能是< 10000,但某些行可能是>10000

有人提示如何解决这个问题?

1 个答案:

答案 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