In R

2016-03-31 11 views
2

effizient mehrere Variablen von Zeichen in numerische Werte umcodieren Ich verwende R (Version 3.2.3), um mehrere Variablen (im selben Datenrahmen) aus Zeichenwerten ("Hoch", "Mittel", "Niedrig" und "Neu") zu rekodieren "No Concerns") zu numerischen Werten (4,3,2 und 1). Ich weiß, dass es mehrere Möglichkeiten gibt, eine Variable zu rekodieren und in meinem Beispiel unten habe ich die "recode" -Funktion im Auto-Paket verwendet. Dies funktioniert gut, wenn Sie eine einzelne Variable neu codieren, aber wenn ich mehrere Variablen (Spalten 45 bis 68) festlege, werden alle Werte durch "N/A" ersetzt.In R

df[,c(45:68)] <- recode(df[,c(45:68)],"'High'=4;'Medium'=3;'Low'=2;'No Concerns'=1",as.numeric.result=TRUE) 

Ich würde alle Hinweise darauf schätzen, wo ich hier vielleicht falsch liege. Ich bin neu in der Coding-Community, also lass es mich wissen, wenn ich genug Details in meiner Frage angegeben habe.

+2

Willkommen bei StackOverflow! Im Hinblick auf genügend Details in Ihrer Frage: Bitte lesen Sie die Informationen über [wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask) und wie man ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610). Dies wird es anderen sehr erleichtern, Ihnen zu helfen. – Jaap

+0

Vielleicht einfach 'data.matrix': z. 'as.data.frame (Titanic)' vs. 'data.matrix (as.data.frame (Titanic))'. – lukeA

+0

Procrastinatus Maximus - Danke für den Ratschlag, eine gute Frage zu stellen und ein praktikables Beispiel zu geben. –

Antwort

2

Versuchen Sie Folgendes:

df[,c(45:68)] <- lapply(df[,c(45:68)], function(x) 
       recode(x,"'High'=4; 
          'Medium'=3; 
          'Low'=2; 
          'No Concerns'=1", 
          as.numeric.result=TRUE)) 

Was hier passiert, ist, dass Sie einzelne Spalten recode passieren. Betrachtet man die Hilfedatei von recode, sieht man, dass die Funktion einen numerischen Vektor, einen Zeichenvektor oder einen Faktor als Eingabe erwartet. In Ihrem Code geben Sie jedoch eine Liste an. Der obige Code bietet einzelne Spalten zum Recode, die funktionieren sollten. Natürlich, ohne richtige Beispieldaten, ist es schwer zu sagen, aber versuchen Sie es.