Ich habe eine Simulation, die eine große Aggregat und Schritt in der Mitte kombinieren hat. Ich habe diesen Prozess mit der plpl ddply() -Funktion erstellt, die für einen großen Teil meiner Bedürfnisse funktioniert. Aber ich brauche diesen Aggregationsschritt, um schneller zu sein, da ich 10K-Simulationen ausführen muss. Ich skaliere die Simulationen bereits parallel, aber wenn dieser Schritt schneller wäre, könnte ich die Anzahl der Knoten, die ich brauche, stark reduzieren.R: Beschleunigung "Gruppe von" Operationen
Hier ist eine vernünftige Vereinfachung dessen, was ich zu tun versucht:
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)
)
)
Alle Tipps oder Anregungen geschätzt werden!
nicht auf Leistung, sondern Kasse 'weighted.mean' in – hadley
Oh Basis, das ist praktisch zusammen. Sie können sehen, ich R gelernt, durch googeln, was ich tun muss;) –