有没有办法在R中使用iconv()正确编码整个数据帧?

时间:2018-12-21 20:31:11

标签: r

我正在使用新的数据集,但是在导入之后,它显示了错误的编码。所有的“ã”都显示为其他内容。

我找到了一种使用iconv()修复列的方法,但是有一种简单的方法可用于所有389列吗?

md2016 <- read_delim("~microdados_2016", ";", escape_double = FALSE, trim_ws = TRUE)

md2016$v1 <- iconv(md2016$v1, to = "UTF-8"

3 个答案:

答案 0 :(得分:1)

您可以使用lapply

md2016new <- lapply(md2016, iconv, to = "UTF-8")

答案 1 :(得分:0)

您可以将数据直接加载到数据帧中并一步转换。 您将需要“阅读器”(独立或“ tidyverse”的一部分)

首先猜测输入数据是什么编码

readr::guess_encoding("path/to/file.csv")

注意结果,对我来说是

# A tibble: 2 x 2
  encoding   confidence
  <chr>           <dbl>
1 ISO-8859-1       0.27
2 ISO-8859-2       0.21

然后将readr与一些参数一起使用,包括上面找到的输入编码值

data <- read_csv("path/to/file.csv", 
                        locale = locale(encoding = "ISO-8859-2",
                        asciify = TRUE))

答案 2 :(得分:0)

一个 tidyverse 解决方案:

df<-df %>%
      mutate_if(is.character, 
                function(col) iconv(col, to="UTF-8"))