Ich bin kein Experte in R ...R wie oben Niveau zu halten und die all anderen Ebene ändern
In meinen Trainingsdaten gibt es ein Feld Source
genannt ist, die 30 Stufen hat, ich möchte nur zu Behalten Sie die obersten 2 Ebenen, da sie die Mehrheit sind, und müssen Sie alle anderen 28 Ebenen in "Andere" ändern. Auf diese Weise wird es für mich einfacher, One-Hot Encoding später anzuwenden.
Ich habe hier geprüft Lösungen: Solution 1 und Solution 2
Und ich habe noch stucked ...
Hier sind die wichtigsten Lösungen, die ich versucht:
train
ist die Original-Trainingsdaten, x_train
wird nur eine Kopie. Source
ist eine Faktorvariable. Die Top 2 Ebenen sind 'S122', die ebenen1 ist, und 'S133', die Level8
1 Versuchen Ich verwende which
Hier ist, so dass ich nicht konvertieren müssen Faktor zuerst in Charakter. Vor der Verwendung von which
habe ich versucht, einen Faktor in ein Zeichen umzuwandeln. Die Ergebnisse sind die gleichen, hat nicht funktioniert .... Nachdem Sie den Code hier läuft, nichts geändert, aber hinzugefügt, nur 1 mehr Ebene namens ‚Andere‘ ...
x_train <- train
levels(x_train$Source) <- c(levels(x_train$Source), "Other")
x_train$Source[which((x_train$Source != 'S122') && (x_train$Source != 'S133'))] <- 'Other'
str(x_train$Source)
der Zwischenzeit, in diesem Fall, ich bin unter Verwendung von Methoden wie revalue()
nicht, weil es 28 Level ist geändert werden müssen, will ich nicht 28 Werte in einem Verfahren schreiben ....
Versuchen 2
Dann wechselte ich zu einem sehr einfach so, Iteration ... Ich habe versucht, while
Schleife auch nicht funktioniert.
x_train <- train
for (i in 1:30) {
if (i == 1 || i == 8) {
next
}
levels(x_train$Source)[i] <- 'Other'
}
Nach dieser Methode nicht alle 28 Stufen verändert werden, und ich habe realisiert, während die Werte dieser Ebenen die Länge der Gesamtpegel zu geändert wurden, verändert sich, und der Index wird geändert. Deshalb habe ich zu while
Schleife geändert, aber noch hat es nicht funktioniert ....
Daher ist es eine Möglichkeit für mich, nur die Top-2 Niveau zu halten und alle anderen Ebenen in ‚Andere‘ ändern?
Haben Sie dieses Problem gelöst? Wenn ja, bitte teilen Sie, wenn nicht, fügen Sie bitte ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – shayaa
Ja, ich löste das Problem auf eine einfache Weise, aber sieht albern aus, ich werde das nach der Arbeit heute teilen ~ –