如何用类表进行计算

时间:2013-07-23 08:28:25

标签: r

如何与班级table合作?我需要使用table()结果进行一些计算,现在我将表解压缩并将其强制转换为数据帧。这是一种很好的做法,或者有更好(更快)的方法。我有以下示例:

x <- data.frame(a=c(1,1,1,1,1,1,0,0,0,0,0,0,0),
                b=c('a','a','b','b','a','a','b','b','a','a','b','b','a'))

t <- table(x$b,x$a)

t <- data.frame(unclass(t))

sum(log((t$X0/sum(t$X0)) / (t$X1/sum(t$X1))) * ((t$X0/sum(t$X0)) - (t$X1/sum(t$X1))))

编辑:我发现我可以使用prop.table,但问题仍然是一样的:

t <- data.frame(unclass(prop.table(table(x$b,x$a),margin=2)))

sum(log(t$X0/t$X1) * (t$X0 - t$X1))

1 个答案:

答案 0 :(得分:2)

table基本上是array,因此适用相同的方法:

x <- data.frame(a=c(1,1,1,1,1,1,0,0,0,0,0,0,0),
                b=c('a','a','b','b','a','a','b','b','a','a','b','b','a'))

probtable <- prop.table(table(x$b,x$a),margin=2)
sum(log(probtable[,"0"]/probtable[,"1"]) * (probtable[,"0"] - probtable[,"1"]))