Angenommen, ich habe einen R-Datenrahmen. Jede Zeile steht für eine Transaktion, die von jemandem an einem bestimmten Datum ausgeführt wurde. Es gibt viele Spalten, die mehr Informationen über die Transaktion enthalten, z. B. das Geld, das er ausgegeben hat, und die Anzahl der Waren, die er/sie gekauft hat. Es ist möglich, dass eine Person viele Transaktionen hat, so dass eine Person mehrere Zeilen haben kann. Sagen wir, dass ich eine Spalte haben möchte, die aufzeichnet, wie viel der Kunde bei der letzten Transaktion ausgegeben hat. Im Moment benutze ich eine for-Schleife, um durch den gesamten Datenrahmen zu sehen, ob dieser Kunde eine vorherige Transaktion hat. Wenn der Kunde eine vorherige Transaktion hat, füge ich dem Feld einen Wert hinzu; wenn nicht, springe ich einfach in die nächste Reihe. Es funktioniert, aber ich habe es mit einem Datenrahmen mit mehr als 1,7 Millionen Zeilen zu tun, so dass die for-Schleife für mich zu langsam ist. Haben Sie bessere Ideen, um das Problem zu lösen? Schätzen!!!Im R-Datenframe, wie nach früheren Transaktionsinformationen gesucht wird
0
A
Antwort
0
Angenommen, Sie haben einen data.frame
wie diese
library(dplyr)
df <- read.table(header = TRUE, text = "
CustId transaction Spent
ID1 1 500
ID1 2 706
ID1 3 925
ID1 4 1195
ID1 5 1472
ID1 6 1413
ID2 1 950
ID2 2 1203
ID2 3 1486
ID2 4 1658")
df%>%group_by(CustId)%>%dplyr::mutate(Last=Spent[transaction==max(transaction)])
CustId transaction Spent Last
<fctr> <int> <int> <int>
1 ID1 1 500 1413
2 ID1 2 706 1413
3 ID1 3 925 1413
4 ID1 4 1195 1413
5 ID1 5 1472 1413
6 ID1 6 1413 1413
7 ID2 1 950 1658
8 ID2 2 1203 1658
9 ID2 3 1486 1658
10 ID2 4 1658 1658
Verwandte Themen
- 1. Wie wird im iPhone SDK nach einem Namen gesucht?
- 2. Wie wird nach Eclipse P2-Repositories gesucht?
- 3. Wie wird nach einem festen Dokument gesucht?
- 4. Wie wird nach ungültigen RLM-Ergebnissen gesucht?
- 5. Wie Transaktionsinformationen von paypal
- 6. Applet-Jar wird nicht nach Dateien gesucht
- 7. Kopfzeile ignorieren, wenn nach Duplikaten gesucht wird
- 8. Wie wird nach dem nächsten Wert in einer Nachschlagetabelle gesucht?
- 9. Wie wird nach einem bestimmten Format in einer Zeichenfolge gesucht?
- 10. Wie wird die Datei im Projektverzeichnis in PyCharm gesucht?
- 11. Wie wird die ganze Zeichenfolge nach einem bestimmten Wort gesucht?
- 12. Wie wird in der Tabelle nach bestimmten Spaltenwerten gesucht?
- 13. Wie kontinuierlich nach Scope-Variablen bis zum Update gesucht wird
- 14. Wie wird nach Ähnlichkeit in MySQL gesucht und sortiert?
- 15. Wie wird nach mehreren Feldern (SQL, PHP) gesucht?
- 16. Wie wird nach allen Großbuchstaben in vim gesucht?
- 17. Wie wird nach einem Zeichenfolgenliteral gesucht, das Escapezeichen erlaubt?
- 18. Wie wird in Ionic 2/Angular 2 nach ngSwitchCase gesucht?
- 19. Wie wird nach dem gleichen Element in einer ArrayList gesucht?
- 20. Wie wird nach vorhandenen Objekten in NSSet oder NSCountedSet gesucht?
- 21. Sequelize - Wie wird nach einer indirekten Assoziation gesucht?
- 22. Wie wird nach Dokumenten mit 2 oder mehr Einträgen im mehrwertigen Feld in Solr gesucht?
- 23. Wie wird nach einer bestimmten E-Mail-Nachricht im IMAP-Postfach gesucht?
- 24. Wie wird über alle Felder gesucht?
- 25. Wird nach einem ungültigen Textfeld gesucht, das die Leistung beeinträchtigt?
- 26. BeautifulSoup gibt leere Liste zurück, wenn nach Klassenklassennamen gesucht wird
- 27. Telling ld wo über eine Umgebungsvariable nach Verzeichnissen gesucht wird
- 28. indexOf() gibt -1 zurück, wenn nach Leerzeichen gesucht wird
- 29. Doktrin 2: Wie wird nach einer Entität nach dem Wert ihrer Assoziation gesucht?
- 30. Wie wird nur in derzeit geöffneten Dateien in vscode gesucht?
Es ist einfacher, Ihnen zu helfen, wenn Sie irgendeine Art von [reproduzierbaren Beispiel] liefern (https://stackoverflow.com/questions/5963269/how-to-make -a-great-r-reproduzierbar-Beispiel) mit Beispieleingabedaten und der gewünschten Ausgabe, so dass mögliche Lösungen getestet werden können. Es muss nicht voll sein, aber zumindest etwas zu spielen, ist nützlich und weniger abstrakt. – MrFlick