【问题标题】:R unable to revalue - unable to translate to native encodingR 无法重估 - 无法转换为本机编码
【发布时间】:2021-08-24 17:12:15
【问题描述】:

我最近从小部件运动中抓取了一些数据,用于我的梦幻足球联赛。一些球员的名字被记录为奇怪的符号。当我尝试使用 plyr::revalue 重命名玩家名称时,我收到一条错误消息,指出“x 中不存在这些值”,即使我直接从控制台或 View(f) 复制了它们。任何帮助将不胜感激。代码如下:

library(dplyr)
library(rvest)
library(plyr)



url <- "https://widgets.sports-reference.com/wg.fcgi?css=1&site=fb&url=%2Fen%2Fcomps%2F9%2Fstats%2FPremier-League-Stats&div=div_stats_standard"


f <- url %>% 
  xml2::read_html() %>%
  rvest::html_nodes('table') %>%
  html_table() %>%
  .[[1]]


names(f)<-c("RK", "Player", "Nation", "Pos", "Squad" ,"Age", "Born" ,"MP", "Starts", "Min","90s", "Goals", "Assists", "Non-pen_goals",
 "Pens_scored", "Pen_attempts", "Yellow_cards", "Red_cards", "G_P90","A_P90" ,"G+A_P90", "G-pen_P90", "G+A-pen_P90", "xG", "npxG",
 "xA", "npxG+xA", "xG_P90", "xA_P90", "xG+xA_p90", "npxG_P90", "npxG+xA_P90", "Matches" )



f$Player<-revalue(f$Player, c("Ã\u0087aÄ\u009flar Söyüncü" = "Çaglar Söyüncü",   
                              "Ã\u0089rik Lamela" = "Erik Lamela",
                              "İlkay GündoÄ\u009fan" = "Ilkay Gündogan",
                              "Å\u0081ukasz FabiaÅ\u0084ski" = "Lukasz Fabianski",
                              "Abdoulaye Doucouré" = "Abdoulaye Doucouré", 
                              "Adama Traoré" = "Adama Traoré",
                              "Adrián" = "Alisson Ramses Becker",
                              "André Gomes‡" = "André Filipe Tavares Gomes",
                              "Antonio Rüdiger" = "Antonio Rüdiger",
                              "Ayoze Pérez" = "Ayoze Pérez",
                              "Bertrand Traoré" = "Bertrand Traoré",
                              "Cédric Soares‡" = "Cédric Soares",
                              "César Azpilicueta" = "César Azpilicueta",
                              "Caoimhín Kelleher" = "Caoimhin Kelleher", 
                              "Cheikhou Kouyaté" = "Cheikhou Kouyaté", 
                              "Davinson Sánchez" = "Davinson Sánchez", 
                              "Davy Pröpper" = "Davy Pröpper",
                              "Emiliano Martínez" = "Emiliano Martínez",
                              "Fábio Silva" = "Fabio Silva",
                              "Fabian Schär" = "Fabian Schär",
                              "Federico Fernández" = "Federico Fernández",
                              "Fernando Marçal" = "Fernando Marçal",
                              "Ferrán Torres" = "Ferran Torres",
                              "Gylfi Sigurðsson" = "Gylfi Sigurdsson", 
                              "Héctor Bellerín" = "Héctor Bellerín",
                              "Hélder Costa" = "Hélder Wander Sousa de Azevedo e Costa",
                              "Jóhann Berg Guðmundsson"= "Johann Berg Gudmundsson",
                              "Jaïro Riedewald" = "Jairo Riedewald", 
                              "James Rodríguez" = "James Rodríguez",
                              "João Cancelo" = "João Pedro Cavaco Cancelo",
                              "João Moutinho" ="João Filipe Iria Santos Moutinho",
                              "João Virgínia" ="João Virgínia",
"Joël Matip" = "Joel Matip",
"Joël Veltman" = "Joël Veltman",
"José Izquierdo" = "José Izquierdo",
"Luka MilivojeviÄ\u0087" = "Luka Milivojevic",
"Martin Ã\u0098degaard" = "Martin Ødegaard",
"Martin Dúbravka" = "Martin Dubravka",
"MatÄ\u009bj Vydra" = "Matej Vydra",
"Mateo KovaÄ\u008diÄ\u0087" = "Mateo Kovacic",
"Miguel Almirón" = "Miguel Almirón",
"N'Golo Kanté" = "N'Golo Kanté", 
"Nélson Semedo" = "Nélson Cabral Semedo", 
"Naby Keïta" = "Naby Keita", 
"Nathan Aké" = "Nathan Aké",
"Nemanja MatiÄ\u0087" = "Nemanja Matic", 
"Nicolas Pépé" = "Nicolas Pépé", 
"Pablo Hernández" = "Pablo Hernández", 
"Pablo MarÃ" = "Pablo Marí", 
"Pascal GroÃ\u009f" = "Pascal Groß",
"Pierre Højbjerg" = "Pierre-Emile Højbjerg",
"Raúl Jiménez" = "Raúl Jiménez",
"Rúben Dias" = "Rúben Santos Gato Alves Dias",
"Rúben Neves" = "Rúben Diogo da Silva Neves",
"Rúben Vinagre" = "Rúben Gonçalo da Silva Nascimento Vinagre",
"Rúnar Alex Rúnarsson" = "Rúnar Alex Rúnarsson",
"Rayan Aït Nouri" = "Rayan Ait Nouri",
"Robert Sánchez" = "Robert Sánchez",
"Romain Saïss" = "Romain Saïss",
"Rui Patrício" = "Rui Pedro dos Santos Patrício",
"Séamus Coleman" = "Seamus Coleman",
"Saïd Benrahma" = "Saïd Benrahma", 
"Sadio Mané" = "Sadio Mané",
"Sead Kolašinac" = "Sead Kolasinac", 
"Sergio Reguilón" = "Sergio Reguilón",
"Thiago Alcántara" = "Thiago Alcántara do Nascimento",
"Tomáš SouÄ\u008dek" = "Tomas Soucek",
"Trézéguet" = "Mahmoud Ahmed Ibrahim Hassan",
"Victor Lindelöf" = "Victor Lindelöf",
"Vladimír Coufal" = "Vladimir Coufal"

))

编辑 如果我只是尝试重新评估名字,我会收到此错误消息:'x 中不存在以下from 值:Ãlar Söyüncü 警告信息: 无法将 'Ãlar Söyüncü' 转换为本机编码'

f$Player<-revalue(f$Player, c("Ã\u0087aÄ\u009flar Söyüncü" = "Çaglar Söyüncü"))

【问题讨论】:

  • 这不是答案,但我认为您想在 dplyr 之前加载 plyr,而不是之后。如果它仍然存在问题,我不知道(我过去见过一些)。这可能不是您的问题的原因,这只是我注意到的。
  • 谢谢史蒂夫。现在完成了,但同样的问题
  • 是的,我没想到它会解决这个问题,只是以后可能会避免其他问题。

标签: r plyr


【解决方案1】:

我已经能够使用以下方法删除所有问题符号:

 f$Player<-iconv(f$Player, from = "UTF-8", to = "ASCII", sub = "")

我现在必须重新输入玩家姓名,但现在应该可以正常工作了。

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 2012-10-07
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    相关资源
    最近更新 更多