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は基本的に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 に答える