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,然後刪除具有零計數高於該閾值的列。
我有數據幀比零大:ř計數值大於在數據幀列
mat=data.frame(A=c(12,10,0,14,0,60),B=c(0,0,0,0,13,65))
的問題是:如何篩選出列用零過量的[例如> 50%]? 例如B列將不得不被刪除。
這將是巨大設置與nrow(墊)的閾值×0.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
甚至'保持< - (colMeans(墊> 0)> 0.5)'(括號不必要,但我喜歡他們);因爲它是一個數據框架,所以'mat [keep]'應該可以工作。 –
好點本,謝謝。 –
謝謝!它工作,簡單而優雅。 – Henk