【问题标题】:Rename levels of factors that contain symbols in R重命名包含 R 中符号的因子水平
【发布时间】:2016-04-14 17:22:25
【问题描述】:

我有一个名为 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&lt;f1&gt;a""Pa&lt;ed&gt;s Vasco" 等符号的关卡。我尝试了几个不成功的选项:

选项 1:使用函数 revalue 封装 plyr

 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" 

我不明白为什么关卡没有得到正确的标签。关于可能发生的事情有什么建议吗?

【问题讨论】:

  • 感谢您的发现。还是不行
  • 是的,它适用于其他关卡,但不适用于我所包含的关卡。也许问题与级别包括 > 和 的事实有关

标签: r r-factor


【解决方案1】:

我们可以从car使用recode

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"         

【讨论】:

  • 谢谢@akrun。尽管我已经尝试了您的代码,但它仍然无法正常工作。我对这个问题的猜测可能是因为这些级别(加泰罗尼亚和巴斯克地区)与原始名称中的重音符号(例如 ñ 和 í)等奇怪的符号相关联,因此 R 发现很难处理它们。跨度>
  • @Edu 根据您展示的示例,它正在工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
相关资源
最近更新 更多