2014-12-15 3 views
3

각 주제마다 개별적으로 ANOVA를 실행해야합니다. 데이터 프레임은 37 개의 주제에서 오는 데이터로 구성되어 있으며 각 주제마다 37 번 ANOVA를 별도로 실행하기 위해 37 번 반복하지 않습니다. 이 내 데이터의 첫 4 행은 다음과 같습니다R 데이터 프레임 그룹에 함수 적용

 latency subject  trialcode 
    1 1385 14233664 neighbour 
    2 2493 14233664 neighbour 
    3 1429 14233664 neighbour 
    4 1884 14233664 neighbour 

이 내 코드입니다 :

tmp <- with(as.data.frame(data), 
     by(data$subject, 
      function(x) aov(latency ~ trialcode + Error(trialcode), data=data))) 
sapply(tmp, coef) 

하지만 오류 메시지가 얻을 :

Error in unique.default(x, nmax = nmax) : 

) (독특한에만 적용을 벡터

도움을 주시면 감사합니다.

+0

를 사용하여 수 있습니다. 대체 방법은 https://ramnathv.github.io/pycon2014-r/explore/sac2.html을 참조하십시오. – Roland

답변

0

나는 by 호출이 올바르지 않다고 생각한다. 나는 당신의 데이터의

do.call(rbind,by(npk[,-1], npk$block, 
     FUN=function(x) coef(aov(yield~N+P+K, data=x)))) 

data(npk)를 사용하는 경우, 내가 by``의 팬이 아니에요

do.call(rbind, by(data[,-2], data$subject, 
    FUN=function(x) coef(aov(latency ~ trialcode+ Error(trialcode), x)))) 

또는 data.table

library(data.table) 
setkey(setDT(data), subject)[, as.list(coef(aov(latency~trialcode+ 
      Error(trialcode))),by=subject]