2016-04-14 15 views
1

Ich habe ein Datenrahmen prueba genannt, wo ich einen Faktor Variable ccaa haben, das die folgenden Stufen enthält:Rename Ebenen von Faktoren, die Symbole in R enthalten

x <- c("","Andalucia","Aragon","Asturias","Balears","Canarias","Cantabria", 
     "Castilla Leon","Castilla Mancha","Catalu<f1>a","Ceuta","Comunitat Valenciana", 
     "Extremadura","Galicia","Madrid","Melilla","Murcia","Navarra","Pa<ed>s Vasco", 
     "Rioja") 

prueba <- data.frame(cca = x) 
levels(prueba$cca) 

# [1] ""      "Andalucia"   "Aragon"    "Asturias"    
# [5] "Balears"    "Canarias"    "Cantabria"   "Castilla Leon"  
# [9] "Castilla Mancha"  "Catalu<f1>a"   "Ceuta"    "Comunitat Valenciana" 
# [13] "Extremadura"   "Galicia"    "Madrid"    "Melilla"    
# [17] "Murcia"    "Navarra"    "Pa<ed>s Vasco"  "Rioja" 

Ich versuche, diese Werte zu benennen, die solche Symbole enthalten als "Catalu<f1>a" und "Pa<ed>s Vasco". Ich habe mehrere erfolglose Optionen ausprobiert:

Option 1: Paket plyr mit Funktion revalue

prueba$ccaa = revalue(prueba$ccaa,c("Pa<ed>s Vasco" = "Basque Country", "Catalu<f1>a" = "Catalonia")) 

Es ergibt sich die folgende Fehlermeldung:

The following `from` values were not present in `x`: Pa<ed>s Vasco, Catalu<f1>a 

Option 2:

levels(prueba$cca)[levels(prueba$cca)=="Catalu<f1>a"] <- "Catalonia" 
levels(prueba$cca)[levels(prueba$cca)=="Pa<ed>s Vasco"] <- "Basque Country" 

Diese funktioniert gut, aber nicht umbenannt die Ebenen mit dem neue Etiketten

levels(prueba$ccaa) 
# [1] ""      "Andalucia"   "Aragon"    
# [4] "Asturias"    "Balears"    "Canarias"    
# [7] "Cantabria"   "Castilla Leon"  "Castilla Mancha"  
# [10] "Catalu<f1>a"   "Ceuta"    "Comunitat Valenciana" 
# [13] "Extremadura"   "Galicia"    "Madrid"    
# [16] "Melilla"    "Murcia"    "Navarra"    
# [19] "Pa<ed>s Vasco"  "Rioja" 

Ich verstehe nicht, warum die Ebenen nicht die richtigen Etiketten bekommen. Irgendwelche Vorschläge darüber, was passieren könnte?

+0

Dank für das Auffinden verwenden. Funktioniert immer noch nicht – Edu

+0

Ja, es funktioniert mit anderen Ebenen, aber nicht für diejenigen, die ich einschließe. Vielleicht hängt das Problem damit zusammen, dass die Ebenen> und Edu

Antwort

1

Wir recode von car

library(car) 
prueba$cca <- recode(prueba$cca, "'Pa<ed>s Vasco'='Basque Country';'Catalu<f1>a' = 'Catalonia'") 
levels(prueba$cca) 
#[1] ""      "Andalucia"   "Aragon"    "Asturias"    "Balears"    "Basque Country"  "Canarias"    
#[8] "Cantabria"   "Castilla Leon"  "Castilla Mancha"  "Catalonia"   "Ceuta"    "Comunitat Valenciana" "Extremadura"   
#[15] "Galicia"    "Madrid"    "Melilla"    "Murcia"    "Navarra"    "Rioja"   
+0

Danke @akrun. Es funktioniert immer noch nicht, obwohl ich deinen Code ausprobiert habe und es tut es auch. Meine Vermutung, die auf dieses Problem bezogen wurde, kann auf die Tatsache zurückgeführt werden, dass diese Ebenen (Katalonien und Baskenland) mit seltsamen Symbolen wie Akzenten (z. B. ñ und í) in den rohen Namen verbunden sind und R daher schwierig zu verarbeiten ist. – Edu

+0

@Edu Basierend auf dem Beispiel, das Sie gezeigt haben, funktioniert es. – akrun