【问题标题】:Replace wrong encodings in a data-frame替换数据帧中的错误编码
【发布时间】:2023-04-01 03:49:01
【问题描述】:

如何用它对应的特殊字符替换某个字符串(例如“ÃŔ)的所有出现?(不幸的是,字符编码是错误的)。

例如,我想将“ü”替换为“ü”,将“ä”替换为“ä”等。我可以使用以下代码执行此操作,但如何将其应用于数据中的每一列。框架?我怎样才能最有效地做到这一点?

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

谢谢!

【问题讨论】:

  • 就像评论一样,是否可以用不同的编码读取它?那会更容易
  • 另请参阅rvest::repair_encoding,它曾多次帮助我,但不适用于这些特定示例(尽管可能是因为它已被复制并粘贴在这里,所以无论如何都要测试它)。

标签: r string replace encoding gsub


【解决方案1】:

可能有几种方法可以解决这个问题,具体取决于实际问题:

A

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

B

数据实际上已损坏(即,之前有人弄乱了编码,读错不是您的错),您现在想手动修复它(只需几个字符,例如 ä、ö、ü、 ß.)

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

  1. 创建一个修复错误的函数:

    my_fun <- function(str){ str <- gsub("ü", "ü", str) str <- gsub("ä", "ä", str) < additional steps > str }

  2. 将其应用于数据框的每个字符列:

df %&gt;% mutate_if(is.character, my_function)

【讨论】:

  • 没错。因子为每个值存储一个整数,并在 levels 属性中存储相应的字符串。对于因素,您只需要更改levels,而不是将函数应用于每个值。如果您很快需要考虑因素并且不关心速度,您可以这样做:mutate_if(is.factor, ~as.factor(my_function(as.character(.x)))
猜你喜欢
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 2012-01-01
  • 2015-07-21
  • 2022-12-14
  • 2016-09-27
相关资源
最近更新 更多