Wie kommt man zu aggregieren und zusammenfassen von Daten schnell?

Ich habe einen Datensatz, dessen Header ungefähr so Aussehen:

PID Time Site Rep Count

Möchte ich die Summe der Count durch Rep für jeden PID x Time x Site combo

auf die resultierenden Daten.Rahmen, ich möchte den Mittelwert von Count für PID x Time x Site combo.

Aktuelle Funktion ist wie folgt:

dummy <- function (data)
{
A<-aggregate(Count~PID+Time+Site+Rep,data=data,function(x){sum(na.omit(x))})
B<-aggregate(Count~PID+Time+Site,data=A,mean)
return (B)
}

Dies ist quälend langsam (original-Daten.Rahmen ist 510000 20). Gibt es eine Möglichkeit, diese Fahrt mit plyr?

  • Sie nicht Zustand, warum haben Sie das A< - - Linie. Sind Sie sicher, dass es eine Gewichtung gibt es? Entsprechend Ihrer angegebenen Kriterium müssen Sie nur die B< - - Linie. (plyr nicht machen es nicht schneller, aber die Daten.Rahmen)
  • Recht, Daten.Tisch war super schnell (und ich bin so froh, dass ich gelernt, über es). Einer war überflüssig, ja.
  • Dann die Eine Linie würde erklären, warum das Aggregat wurde so langsam. Wenn Sie gerade in Ausführung B sollte es gehen ziemlich schnell. Die Daten.Tabelle bereitgestellten Befehl auch entfernt REP. Es ist, dass Sie quasi einen neuen data frame in A die gleiche Größe wie das original, dass war eine Verlangsamung Dinge nach unten, so viel.
InformationsquelleAutor Maiasaura | 2011-10-11
Schreibe einen Kommentar