我有数据框:
mat=data.frame(A=c(12,10,0,14,0,60),B=c(0,0,0,0,13,65))
Run Code Online (Sandbox Code Playgroud)
问题是:如何过滤掉过量零的列[例如> 50%]?例如,必须删除B列.
使用nrow(mat)*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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1736 次 |
| 最近记录: |