Ich habe mehrere große Datentabellen in R. Einige Spaltennamen erscheinen zweimal mit einem fast doppelten Namen: Sie sind bis auf das letzte Zeichen gleich.R - Fügen Sie Spalten mit fast demselben Namen hinzu und speichern Sie sie mit dem richtigen Spaltennamen
Zum Beispiel:
[1] "Genre_Romance" (correct)
[2] "Genre_Sciencefiction" (correct)
[3] "Genre_Sciencefictio" (wrong)
[4] "Genre_Fables" (correct)
[5] "Genre_Fable" (wrong)
Genre_Romance <- c(1, 0, 1, 0, 1)
Genre_Sciencefiction <- c(0, 1, 0, 0, 0)
Genre_Sciencefictio <- c(1, 0, 1, 1, 0)
Genre_Fables <- c(0, 0, 1, 0, 0)
Genre_Fable <- c(0, 0, 0, 0, 1)
dt <- data.table(Genre_Romance, Genre_Sciencefiction, Genre_Sciencefictio, Genre_Fables, Genre_Fable)
Jetzt möchte ich mit fast der gleichen Spaltennamen die Spaltenwerte hinzuzufügen. Ich möchte diese Summe unter dem richtigen Spaltennamen speichern, während die falsche Spalte entfernt wird. Die Lösung wäre hier:
dt[,"Genre_Sciencefiction"] <- dt[,2] + dt[, 3]
dt[,"Genre_Fables"] <- dt[,4] + dt[, 5]
dt[,"Genre_Sciencefictio"] <- NULL
dt[,"Genre_Fable"] <- NULL
dt
Genre_Romance Genre_Sciencefiction Genre_Fables
1 1 0
0 1 0
1 1 1
0 1 0
1 0 1
Wie Sie sehen können, nicht jeder Spaltenname hat eine fast ein Duplikat (wie „Genre_Romance“). Also behalten wir einfach die erste Spalte so.
Ich versuchte, dieses Problem mit einer for-Schleife zu lösen, um die Spaltennamen einzeln zu vergleichen und die Funktion substr() zu verwenden, um den längsten Spaltennamen mit dem kürzeren Spaltennamen zu vergleichen und die Summe zu übernehmen. Aber es funktioniert nicht richtig und ist nicht sehr R-freundlich.
Der Beitrag unten half mir auch ein bisschen weiter, aber ich kann nicht 'dupliziert' verwenden, da die Spaltennamen nicht genau gleich sind. how do I search for columns with same name, add the column values and replace these columns with same name by their sum? Using R
Vielen Dank im Voraus.
Es verwenden könnte könnte helfen, wenn Sie einen konkreteren e geben Beispiel, mit Code, um es zu reproduzieren und (obwohl es ziemlich offensichtlich ist) die entsprechende gewünschte Ausgabe. Weitere Informationen finden Sie unter http://stackoverflow.com/a/28481250. – Frank
Danke für deinen Kommentar @Frank. Ich habe meinen Beitrag bearbeitet. – equuz
Würde das Maximum der beiden Spalten immer dasselbe Ergebnis liefern wie die Summe? Das heißt, könnte es jemals 1 in Sciencefiction und Science Fiction haben? Es scheint nicht sinnvoll zu sein, mit einer 2 für diese (scheinbar 1/0 Spalte) zu enden. – Frank