如何与班级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))
答案 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"]))