Ich versuche eine effizientere Möglichkeit zu finden, inkrementelle Zählung eindeutiger Datenpunkte in einem Datenrahmen zu erreichen.Effizienter Weg, einzelne Datenpunkte im Datenrahmen inkrementell zu zählen
Zum Beispiel habe ich folgenden Code geschrieben:
df = matrix(c(1,2,3,3,4,5,1,2,4,4))
count = matrix(nrow = nrow(df),ncol=1)
for (i in 1:nrow(df)) {
count[i,1] = length(which(df[1:i,1] == df[i,1]))
}
Der Zweck des Codes ist, um schrittweise jede Instanz eines spezifischen Wert zu zählen, z.B. die Zählung Spalte wird folgendes Ergebnis haben:
1,1,1,2,1,1,2,2,2,3.
Der Code, den ich geschrieben habe, so weit hat den Zweck erfüllt, aber die Probe df über nur 10 Werte enthält. Der reale Datenrahmen, an dem ich diese Funktion ausführen möchte, enthält 52,118 values
, was sehr viel Zeit in Anspruch nimmt.
Kennt jemand eine effizientere Möglichkeit, den obigen Code auszuführen?
Vielen Dank für all das Feedback jeder! Ich versuche die Methoden "data.table" und "dplyr" zu implementieren, da sie für mich am sinnvollsten sind. Trotzdem bekomme ich einen Fehler, der besagt, dass die "setDT" -Funktion bei Verwendung der "data.table" -Methode nicht gefunden wurde. Warum das? –
Welche Version von data.table verwenden Sie? Siehe hier: http://stackoverflow.com/questions/20345022/convert-a-data-frame-to-a-data-table-without-copy. Außerdem sollte das Argument 'x' für 'setDT' eine 'list', 'dat.frame' oder 'data.table' sein. – user227710
Mein Dataset ist ein data.frame, das ist also in Ordnung. Die Version von data.table, die ich habe, ist 1.9.4. Ich habe es gerade heruntergeladen wie vor 20 Minuten. –