Ich versuche, die eindeutigen Werte von x über die Gruppen y zu zählen.Aggregat in R viel zu lange
Dies ist die Funktion:
aggregate(x~y,z[which(z$grp==0),],function(x) length(unique(x)))
Das ist viel zu lange dauert (~ 6 Stunden und noch nicht geschehen). Ich möchte nicht aufhören zu verarbeiten, da ich heute Abend fertig bin.
by()
wurde zu lange dauert auch
Irgendwelche Ideen, was falsch läuft und wie kann ich die Verarbeitungszeit ~ 1 Stunde reduzieren? Mein Datensatz hat 3 Millionen Zeilen und 16 Spalten.
Eingangsdatenrahmen z
x y grp
1 1 0
2 1 0
1 2 1
1 3 0
3 4 1
Ich möchte die Anzahl der einzigartigen (x) für jedes y wo grp = 0
UPDATE bekommen: Mit ausgezeichneten Antwort des @ eddi. Ich habe
x y
1: 2 1
2: 1 3
Eine Idee, wie kann ich das schnell als die Anzahl der x für jeden Wert y zusammenfassen? hierfür So wird es
Number of x y
5 1
1 3
Geben Sie ein minimales reproduzierbares Beispiel ein, und jemand gibt Ihnen eine Antwort, die in weniger als einer Minute läuft. – eddi
liefern Eingabe und erwartete Ausgabe. So dass es etwas Verständnis gibt, was Sie versuchen zu erreichen. – user5249203
Die Formelmethode von 'aggregate()' ist bekanntermaßen langsamer auf Datenrahmen. Aber ich würde wetten, dass Sie jetzt aufhören könnten und stattdessen das Paket * data.table * verwenden könnten und trotzdem pünktlich fertig sind. Aber ja, reproduzierbares Beispiel. –