Ich habe einen Datenrahmen mit zwei Spalten. Die zweite Spalte enthält nur ganze Zahlen. Genauer gesagt enthält es 0,1,2,3 und einige NAs. Etwas wie das:
%Vor%Nach was ich suche, ist ein Befehl, der 0 in ZZT die 1 in ZZU und so weiter ändert. Die NAs sollten als NAs bleiben. Wie könnte das funktionieren?
Ich habe eine for-Schleife in Kombination mit einigen if-Anweisungen versucht, aber das funktioniert nicht. Ich weiß, dass sich solche wechselnden Gedanken in R recht einfach sind, aber es scheint, dass ich einen Block in meinem Gehirn habe.
Sie können Werte mit der Funktion mapvalues
aus dem plyr-Paket zuordnen. Anhand der Beispieldaten von Mike Wise's Antwort:
Wenn Sie bereits das dplyr-Paket geladen haben (den Nachfolger von plyr), rufen Sie diese Funktion mit plyr::mapvalues()
auf, da das Laden von plyr auf dplyr problematisch ist.
Das wird es tun:
%Vor%Es verwendet einen benannten Vektor als Nachschlagetabelle. Die Klammer ist eigentlich ein Subsetting-Operator, und wenn Sie mit einem Zeichenvektor darauf zugreifen, werden die Vektornamen untergliedert.
Lesen Sie Hadley Wickhams großartiges "Advanced R" -Kapitel über das Subsetting, wenn Sie das nicht verstehen. Ссылка
Die Verwendung von match
zum Erstellen eines Indexvektors in den Ersatzwertvektor ist ein "kanonischer" R-Ansatz (unter Verwendung des Beispiels von Mike Wise)
Wenn Sie sie "an Ort und Stelle" ersetzen wollten (normalerweise eine gefährliche Option), könnte das funktionieren:
%Vor%Tags und Links r lookup-tables