2013-07-23 2 views
1

클래스 table과 어떻게 작동합니까? table() 결과로 일부 계산을 수행해야하며 테이블을 unclass하고 데이터 프레임을 강제 변환해야합니다. 좋은 연습이나 더 나은 (더 빠른) 접근 방식이 있습니다. 나는 다음과 같은 예를 가지고 :클래스 테이블을 사용하여 계산하는 방법

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)) 

답변

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"])) 
관련 문제