2016-07-10 9 views
0

zu rekodieren Ich habe eine Spalte namens CONDITIONALAPPROVAL und es ist mit einer Menge des Buchstaben, N gefüllt. Ich würde gerne alle diese N s zu 0 umcodieren. Unten ist der Code, den ich benutze, aber wenn ich die Spalte drucke, sind nur <NA> s vorhanden.Mit R, um Daten in die vorhandene Spalte

attach(my_data) 
my_data$CONDITIONALAPPROVAL[my_data$CONDITIONALAPPROVAL=='N'] <- 0 
my_data$CONDITIONALAPPROVAL 

Es scheint einfach, aber es funktioniert nicht, und wenn ich Ausgang dieser Spalte es ist nur <NA> s wo sollte es 0 s sein.

+1

Haben Sie eine Warnmeldung erhalten? Ist Ihr 'my_data $ CONDITIONALAPPROVAL' ein' Faktor'? Sie könnten versuchen, es in ein Zeichen umzuwandeln, wenn das der Fall ist: 'my_data $ CONDITIONALAPPROVAL <- as.character (my_data $ CONDITIONALAPPROVAL)' – thelatemail

+0

Ist die Spalte in der Zeichenklasse? – rosscova

+1

Sie müssen Ihre Daten nicht anhängen, wenn Sie bei jedem Anruf den Namen Ihres data.frame verwenden möchten. – Noah

Antwort

0

Sprechen Sie die Variable ein String zuerst (wie es ist, so scheint es, ein Faktor zu sein):

my_data$CONDITIONALAPPROVAL <- as.character(my_data$CONDITIONALAPPROVAL) 

Dann:

my_data$CONDITIONALAPPROVAL[my_data$CONDITIONALAPPROVAL=='N'] <- 0 

Und wenn nötig/relevant, wandeln Sie in numerisch um:

my_data$CONDITIONALAPPROVAL <- as.numeric(my_data$CONDITIONALAPPROVAL) 
0

könnten Wir verwenden data.table

library(data.table) 
setDT(my_data, key = "CONDITIONALAPPROVAL")[ 
    , CONDITIONALAPPROVAL := as.character(CONDITIONALAPPROVAL) 
     ][("N"), CONDITIONALAPPROVAL := "0"] 
+0

Nur neugierig, hat es einen Vorteil, die Spalte als Schlüssel zu setzen, anstatt sie im letzten Schritt zu spezifizieren? – rosscova

+1

@rosscova Es wäre ein bisschen schneller in nachfolgenden Läufen – akrun

+1

@rosscova, es sei denn, Sie werden wiederholte Subset/Join-Operationen tun, nein. – Arun

Verwandte Themen