如何使用readr :: read_delim处理特殊字符(ä)

时间:2019-07-16 08:17:35

标签: r csv readr

我正在尝试使用以下方法读取大量.csv文件:How to import multiple .csv files at once?

在一个字符列中,我有特殊字符,即单词“Länge”中的字母“ä”。读取文件时,我得到"L<e4>nge"。我已将语言环境中的编码设置为UTF-8,但这不能解决问题。我是否缺少选项或使用错误的编码?

示例:

library(readr)

file.text <-
  c(
    "\"var1\";\"var2\";\"var3\";\"var4\";\"var5\";\"var6\";\"var7\"",
    "\"1235\";2019-07-10;\"a\";\"333\";\"as123\";\"Breite\";0,422104377877619",
    "\"44741341906\";2019-07-10;\"b\";\"333\";\"as123\";\"L<e4>nge\";1,02033864930852"
  )

df <-
  read_delim(
    file.text,
    locale = locale(
      decimal_mark = ",",
      grouping_mark = ".",
      encoding = "UTF-8"
    ),
    delim = ";"
  )

df$var6[2]

编辑:

基本功能read.csv2()正在正确读取特殊字符。但是让read_delim()工作仍然很有趣。

1 个答案:

答案 0 :(得分:0)

您可以对ä使用unicode表示法:

file.text <-
  c(
    "\"var1\";\"var2\";\"var3\";\"var4\";\"var5\";\"var6\";\"var7\"",
    "\"1235\";2019-07-10;\"a\";\"333\";\"as123\";\"Breite\";0,422104377877619",
    "\"44741341906\";2019-07-10;\"b\";\"333\";\"as123\";\"L\u00E4nge\";1,02033864930852"
  )