2012-10-23 68 views
2

我有數據幀比零大:ř計數值大於在數據幀列

mat=data.frame(A=c(12,10,0,14,0,60),B=c(0,0,0,0,13,65)) 

的問題是:如何篩選出列用零過量的[例如> 50%]? 例如B列將不得不被刪除。

這將是巨大設置與nrow(墊)的閾值×0.5,然後刪除具有零計數高於該閾值的列。

回答

5

這裏有一種方法:

> mat <- data.frame(A=c(12,10,0,14,0,60),B=c(0,0,0,0,13,65)) 
> 
> keep <- (colSums(mat > 0)/nrow(mat)) > 0.5 
> keep 
    A  B 
TRUE FALSE 
> 
> mat[, keep, drop = FALSE] 
    A 
1 12 
2 10 
3 0 
4 14 
5 0 
6 60 
+3

甚至'保持< - (colMeans(墊> 0)> 0.5)'(括號不必要,但我喜歡他們);因爲它是一個數據框架,所以'mat [keep]'應該可以工作。 –

+0

好點本,謝謝。 –

+0

謝謝!它工作,簡單而優雅。 – Henk