Переименуйте уровни факторов, которые содержат символы в R

У меня есть фрейм данных с именем prueba, где у меня есть факторная переменная ccaa, которая содержит следующие уровни:

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"   

Я пытаюсь переименовать те уровни, которые содержат такие символы, как "Catalu<f1>a" и "Pa<ed>s Vasco". Пробовал несколько неудачных вариантов:

Вариант 1: пакет plyr с функцией revalue

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

Выдает следующую ошибку:

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

Вариант 2:

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

Это отлично работает, но не переименовывает уровни с новыми метками.

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" 

Я не понимаю, почему уровни не имеют правильных меток. Любое предложение о том, что может происходить?


person Edu    schedule 14.04.2016    source источник
comment
Спасибо, что заметили. Все еще не работает   -  person Edu    schedule 14.04.2016
comment
Да, это работает с другими уровнями, но не с теми, которые я включаю. Может быть, проблема связана с тем, что уровни включают в себя › и ‹?   -  person Edu    schedule 14.04.2016


Ответы (1)


Мы можем использовать recode из 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"         
person akrun    schedule 15.04.2016
comment
Спасибо @akrun. Он все еще не работает, хотя я пробовал ваш код, и он работает. Мое предположение, касающееся этой проблемы, может быть связано с тем фактом, что эти уровни (Каталония и Страна Басков) связаны со странными символами, такими как ударения (например, ñ и í) в необработанных именах, и, следовательно, R затрудняется их обработать. - person Edu; 19.04.2016
comment
@Edu Судя по показанному вами примеру, он работает. - person akrun; 19.04.2016