1

一个人应该如何与班级一起工作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))
4

1 回答 1

2

Atable基本上是 a 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"]))
于 2013-07-23T08:58:05.093 回答