J'ai une simulation qui a une énorme agrégat et de combiner étape dans le milieu. J'ai fait un prototype de ce processus en utilisant plyr de ddply() fonction qui fonctionne très bien pour un pourcentage énorme de mes besoins. Mais j'ai besoin de cette agrégation étape pour être plus rapide car je dois courir 10K simulations. Je suis déjà mise à l'échelle des simulations en parallèle, mais si cette première étape ont été plus vite que je pouvais diminuer considérablement le nombre de nœuds dont j'ai besoin.
Voici une simplification raisonnable de ce que je suis en train de faire:
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)
)
)
Tous les conseils ou suggestions sont appréciées!