R 替换数据帧中的错误编码

R 替换数据帧中的错误编码,r,string,replace,encoding,gsub,R,String,Replace,Encoding,Gsub,如何将某个字符串(例如“Ô)的所有出现替换为其相应的特殊字符?(不幸的是,字符编码是错误的) 例如,我想将“ü”替换为“ü”,将“÷”替换为“ä”等。我可以使用以下代码来实现这一点,但如何将其应用于data.frame中的每一列?如何才能最有效地实现这一点 df$colum<-gsub("ü", "ü", daf$column) df$coln根据实际问题的不同,可能有几种方法: A: 如果您的原始数据(如csv文件等)看起来很好,而您只看到R中的错误编码,则应尝试使用

如何将某个字符串(例如“Ô)的所有出现替换为其相应的特殊字符?(不幸的是,字符编码是错误的)

例如,我想将“ü”替换为“ü”,将“÷”替换为“ä”等。我可以使用以下代码来实现这一点,但如何将其应用于data.frame中的每一列?如何才能最有效地实现这一点

df$colum<-gsub("ü", "ü", daf$column)

df$coln根据实际问题的不同,可能有几种方法:

A

如果您的原始数据(如csv文件等)看起来很好,而您只看到R中的错误编码,则应尝试使用正确的编码读取该文件-大多数读写器函数都会为此使用参数,UTF-8在大多数情况下都会工作。例如,您可以尝试
read.csv(您的文件路径,fileEncoding='UTF-8'))
或类似内容(取决于您读取数据的方式。)

B

数据实际上被破坏了(例如,以前有人把编码搞乱了,读错了不是你的错),现在你想手动修复它(只需几个字符,例如ä,ö,ü,ß)

然后,使用
dplyr
软件包,您可以:

  • 制作一个修复错误的函数:


    my_fun正如注释一样,是否可以用不同的编码读取它?这会更容易参见
    rvest::repair_encoding
    ,它在一些情况下对我有帮助,但在这些特定示例中不起作用(尽管可能是因为它被复制并粘贴在这里,所以无论如何都要测试它)。这是正确的。Factors在
    levels
    属性中为每个值和相应的字符串存储一个整数。对于Factors,您只需要更改
    levels
    ,而不将函数应用于每个值。如果您快速需要引入和引出因子,并且不关心速度,则可以执行:
    mutate\u If(is.factor、~as.factor(my_函数(as.character(.x)))