Wie konvertiert man einen Datenrahmen von Faktor in numerisch?

7

Ich habe einen Datenrahmen mit allen Faktorwerten

%Vor%

Wie kann ich alle Werte im Datenrahmen in einen neuen mit numerischen Werten konvertieren (a zu 1, b zu 2, c zu 3, etc ...)

    
mamatv 01.01.2016, 15:25
quelle

3 Antworten

11

Ich würde versuchen:

%Vor%     
A5C1D2H2I1M1N2O1R2T1 01.01.2016 15:30
quelle
9

Die Konvertierung von factor nach numeric ergibt die ganzzahligen Werte. Wenn jedoch die Spalten factor Ebenen als c('b', 'a', 'c', 'd') oder c('c', 'b', 'a') haben, werden die ganzzahligen Werte in dieser Reihenfolge angezeigt. Um dies zu vermeiden, können wir levels angeben, indem wir factor erneut aufrufen (sicherer)

%Vor%

Wenn wir data.table verwenden, wäre eine Option, set zu verwenden. Es wäre effizienter für große Datensätze. Die Konvertierung in matrix kann Speicherprobleme verursachen.

%Vor%     
akrun 01.01.2016 15:27
quelle
5

Dieser Ansatz ähnelt dem von Ananda, verwendet jedoch unlist() anstelle von factor(as.matrix()) . Da all Ihre Spalten bereits Faktoren sind, kombiniert unlist() sie zu einem Faktorvektor mit den entsprechenden Ebenen.

Sehen wir uns also an, was passiert, wenn wir unlist() Ihren Datenrahmen bearbeiten.

%Vor%

Jetzt können wir einfach as.integer() (oder c() ) für den obigen Code ausführen, weil die Integer-Werte der Faktoren mit Ihrer gewünschten Zuordnung übereinstimmen. Und so wird das folgende Ihren gesamten Datenrahmen neu berechnen.

%Vor%

Hinweis: use.names = FALSE ist nicht erforderlich. Wenn Sie jedoch das Attribut names löschen, wird dieser Prozess effizienter.

Daten:

%Vor%     
Rich Scriven 01.01.2016 16:15
quelle

Tags und Links