在R中导入带有特殊字符的数据

Mpi*_*ris 5 csv r character-encoding special-characters

下图显示了在R中导入数据(记事本)之前和导入之后数据的状态。

在此处输入图片说明

我使用以下命令将其导入R:

Data <- read.csv('data.csv',stringsAsFactors = FALSE,header = TRUE,quote = "")
Run Code Online (Sandbox Code Playgroud)

可以看出,诸如ae之类的特殊字符已被替换为A |之类的东西。(第19行位于左侧,第18行位于右侧)。有没有办法按原样导入CSV文件?(使用R)

Ken*_*oit 6

你的问题是编码问题。这有两个方面:首先,Notepad++ 保存的内容可能与您在保存的文本文件中期望的编码不一致,其次,R 可能正在读取read.csv()基于不同编码的文件,尤其是可能,因为如果您使用的是 Notepad++,那么这表明您使用的是 Windows,因此您可能无法将 UTF-8 作为 R 的系统区域设置。

因此,依次考虑每个问题:

  1. 让 Notepad++ 以特定的编码保存您的文件。在这里,您可以使用这些说明为新文件设置编码。我总是使用 UTF-8 但在这里因为你的文本是丹麦语,Latin-1 也应该工作。

    要验证文本的编码,您可能希望使用RToolsfile提供的实用程序。这将告诉您有关命令行中文件的可能编码的一些信息,尽管它并不完美。(OS X 和 Linux 用户已经拥有此功能,无需安装其他实用程序。)

  2. 将 .csv 文件导入 R设置编码。使用 导入文件时read.csv(),指定encoding = "UTF-8"encoding = "Latin-1"。您可能还想检查您的系统编码是什么,并匹配它。您可以使用Sys.getlocale()(并使用Sys.setlocale().)来执行此操作,例如在我的系统上:

    > Sys.getlocale()
    [1] "en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8"
    
    Run Code Online (Sandbox Code Playgroud)

    您当然可以将其设置为 Windows-1252,但如果在其他平台上使用它,您可能会遇到可移植性问题。UTF-8 是最好的解决方案。