我正在尝试使用prop.table
&的组合计算 r 中每列的 0、1、2、3 的百分比do.call
。
tblpercent <- function(x){
round(prop.table(table(x)),4)
}
do.call(cbind,lapply(A,tblpercent))
但是,有些列不包含完整的 0-3 集合,例如,数据看起来像 A:
A <- data.frame(matrix(
c(0,1,2,1,2,3,2,2,2,3,3,3,1,1,0,3,3,3),
nrow=6, ncol=3, byrow = TRUE))
它会返回如下错误:
X1 X2 X3
0 0.1667 0.3333 0.1667
1 0.3333 0.3333 0.3333
2 0.1667 0.3333 0.5000
3 0.3333 0.3333 0.1667
我知道错误是由于 X2 中缺少 0,X3 中缺少 1,因此返回的百分比仅包含 3 个字段 - 是否可以轻松解决此问题,或者我应该重写整个函数?
正确的输出应该是这样的:
X1 X2 X3
0 0.1667 0.0000 0.1667
1 0.3333 0.3333 0.0000
2 0.1667 0.3333 0.3333
3 0.3333 0.3333 0.5000