2010-05-29 6 views
5

Ich versuche recode in R zu verwenden (aus dem car Paket) und es funktioniert nicht. Ich lese Daten aus einer CSV-Datei in einen Datenrahmen namens results. Dann ersetze ich die Werte in der Spalte Built_year, gemäß der folgenden Logik.Warum ändert sich in R die ursprünglichen Werte nicht?

recode(results$Built_year, 
     "2 ='1950s';3='1960s';4='1970s';5='1980s';6='1990s';7='2000 or later'") 

Wenn ich results$Built_year überprüfen, nachdem Sie diesen Schritt zu tun, scheint es funktioniert zu haben. Es speichert diesen Wert jedoch nicht und kehrt zu seinem vorherigen Wert zurück. Ich verstehe nicht warum.

Danke.

(im Moment etwas schief geht, und ich kann für die Formatierung eines der Symbole nicht sehen)

Antwort

16

Sie müssen zuweisen eine neue Variablen.

Am Beispiel von recode im car Paket

R> x <- rep(1:3, 3) 
R> x 
[1] 1 2 3 1 2 3 1 2 3 
R> newx <- recode(x, "c(1,2)='A'; else='B'") 
R> newx 
[1] "A" "A" "B" "A" "A" "B" "A" "A" "B" 
R> 

By the way, wird das Paket car genannt, nicht Autos.

3

car::recode (und R selbst) funktioniert nicht als SPSS Recode-Funktion. Wenn Sie also eine Transformation auf eine Variable anwenden, müssen Sie sie einer Variablen zuweisen, wie Dirk sagte. Ich benutze nicht car::recode, obwohl es ganz einfach ist ... zu lernen, wie man mit Faktoren umgehen ... wie ich sehen kann, können Sie as.numeric(results$Built_year) anwenden und den gleichen Effekt bekommen. IMHO, mit car::recode in diesem Herrenhaus ist trivial. Sie wollen nur Faktor numerisch ändern, richtig ... Nun, werden Sie überrascht sein, wenn Sie sehen, dass:

> x <- factor(letters[1:10]) 
> x 
[1] a b c d e f g h i j 
Levels: a b c d e f g h i j 
> mode(x) 
[1] "numeric" 
> as.numeric(x) 
[1] 1 2 3 4 5 6 7 8 9 10 

Und, Junge, ich Fragen wie zu beantworten, die auf Faktoren beziehen ... =) Machen Sie sich mit Faktoren vertraut, und Sie werden die Magie von "recode" in R sehen! =) Rob Kabacoff's site ist ein guter Ausgangspunkt.

Verwandte Themen