我有数据框:
mat=data.frame(A=c(12,10,0,14,0,60),B=c(0,0,0,0,13,65))
问题是:如何过滤掉过量零的列[例如> 50%]? 例如。必须删除B列。
使用nrow(mat)* 0.5设置阈值会很好,然后删除零计数值超过该阈值的列。
答案 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