R: acelerando as operações de "agrupar por"

Eu tenho uma simulação que tem um agregado enorme e combina passo bem no meio. Prototipei esse processo usando a função ddply () do plyr, que funciona muito bem para uma grande porcentagem de minhas necessidades. Mas preciso que essa etapa de agregação seja mais rápida, pois preciso executar simulações de 10 mil. Já estou escalando as simulações em paralelo, mas se essa etapa fosse mais rápida, eu poderia diminuir bastante o número de nós de que preciso.

Aqui está uma simplificação razoável do que estou tentando fazer:

library(Hmisc)

# Set up some example data
year <-    sample(1970:2008, 1e6, rep=T)
state <-   sample(1:50, 1e6, rep=T)
group1 <-  sample(1:6, 1e6, rep=T)
group2 <-  sample(1:3, 1e6, rep=T)
myFact <-  rnorm(100, 15, 1e6)
weights <- rnorm(1e6)
myDF <- data.frame(year, state, group1, group2, myFact, weights)

# this is the step I want to make faster
system.time(aggregateDF <- ddply(myDF, c("year", "state", "group1", "group2"),
                     function(df) wtd.mean(df$myFact, weights=df$weights)
                                 )
           )

Todas as dicas ou sugestões são apreciadas!

questionAnswers(3)

yourAnswerToTheQuestion