2017-04-19 1 views
1

Ich arbeite mit einem Datenrahmen, der etwa 200 Zeilen enthält, ich möchte doppelte Zeilen entfernen, addieren Sie die Werte in der 'Minuten' Spalte. Ich bin ziemlich neu in R und habe keinen Weg gefunden, dies zu tun. Beinhaltet es die Anwendung von Regex? Ich würde wirklich jede mögliche Lösung schätzen!Wie werden Zeilen in einem Datenrahmen basierend auf einer Zeichenfolge in R zusammengeführt? - regex

Der Datenrahmen Ich habe sieht wie folgt aus:

df <- data.frame(name = c("Adam Tucker", "AdamTucker", "[email protected]", "adamtucker", "James Mirra", "JamesTMirra", "Sebastian F"), minutes = c(10, 3, 15, 2, 5, 1, 10)) 

        name minutes 
       Adam Tucker  10 
       AdamTucker  3 
[email protected]  15 
       adamtucker  2 
       James Mirra  5 
       JamesTMirra  1 
       Sebastian F  10 

Und das Ergebnis ich würde so aussehen suchen bin:

 name minutes 
Adam Tucker  30 
James Mirra  6 
Sebastian F  10 

Vielen Dank im Voraus!

+2

Das automatische Erkennen von Dingen wie "AdamTucker" und "[email protected]", die zu derselben Person gehören, ist nicht die einfachste Sache. Haben Sie weitere Informationen, die Sie zur Identifizierung dieser Personen verwenden können? Andernfalls ist möglicherweise eine manuelle Reinigung erforderlich. – Marius

+0

Leider nein, ich habe keine weiteren Informationen. Ich vermutete, dass eine programmatische Lösung nicht genug wäre - besonders für diesen Fall - aber weil ich nur ein Anfänger im Codieren bin, dachte ich daran, nur für den Fall zu fragen. Und wie würden Sie dieses Beispiel übrigens manuell lösen? Vielen Dank! – Claudia

+0

Ich würde die Daten manuell bearbeiten (in der ursprünglichen CSV-Datei oder was auch immer), indem ich eine neue Spalte 'cleaned_name' hinzufüge, in der ich den Namen für jede Zeile in einem standardisierten Formular aufschrieb. Danach können Sie die Aggregation automatisch durchführen. – Marius

Antwort

0

Haben Sie eine Masterliste mit allen eindeutigen Namen? Sie können sich wahrscheinlich auf pmatach Paket in R suchen, oder verwenden Sie sqldf Paket LIKE Funktion

df <- data.frame(name = c("Adam Tucker", "AdamTucker", "[email protected]", "adamtucker", "James Mirra", "JamesTMirra", "Sebastian F"), minutes = c(10, 3, 15, 2, 5, 1, 10)) 
require(sqldf) 
sqldf("select * from df where name LIKE '%adam%'") 

#      name minutes 
1    Adam Tucker  10 
2    AdamTucker  3 
3 [email protected]  15 
4    adamtucker  2 

Dann Ebenen hinzufügen, die jeweils den gleichen Namen zuweisen verwenden zu verwenden, oder einfach nur eine weitere Spalte hier mit dem Namen sagen Adam Tuck als Endversion und fusionieren mit Originaldaten unter Verwendung der Namensspalte als Schlüssel.

+0

Ich kann um eine Masterliste mit den endgültigen Namen bitten! Und ich werde auch das Pmatach-Paket nachschlagen. Vielen Dank! – Claudia

Verwandte Themen