首页 > 解决方案 > 如何在 R 程序中读取格式未知且编码未知的 csv 文件?(提供的示例文件)

问题描述

我已尽力在 r 中读取 CSV 文件但失败了。我在以下 Gdrive 链接中提供了该文件的示例。

数据

通过在文本编辑器中打开,我发现它是一个制表符分隔的文件。该文件在 Excel 中读取没有问题。但是当我尝试使用“readr”包或基本 r 包在 R 中读取它时,它会失败。不知道为什么。我尝试过不同的编码,如 UTF-8。UTF-16、UTF16LE。您能否帮我编写正确的脚本来读取此文件。目前,我正在将此文件转换为以逗号分隔的 Excel 格式,以便在 R 中读取。但我确信我做错了什么。任何帮助,将不胜感激。

谢谢阿迈勒

PS:我不明白的是excel是如何在没有提供任何参数的情况下读取文件的?我们可以在 R 中构建相同的逻辑来读取任何文件吗?

标签: rcsvencodingrstudioreadr

解决方案


这是一个与 Windows 相关的编码问题。

当我在 Notepad++ 中打开你的文件时,它告诉我它被编码为 UCS-2 LE BOM。将具有异常编码的文件读入 R 有一个技巧。在您的情况下,这似乎可以解决问题:

read.delim(con <- file("temp.csv", encoding = "UCS-2LE"))

(改编自R: can't read unicode text files even when specified encoding)。

顺便说一句,“CSV”代表“逗号分隔值”。此文件具有制表符分隔的值,因此您应该给它一个 .tsv 或 .txt 后缀,而不是 .csv,以避免混淆。

关于你的第二个问题,我们是否可以在 R 中构建相同的逻辑来猜测编码、分隔符和读取多种类型的文件,而无需我们明确说明编码和分隔符是什么 - 是的,这当然是可能的。我不确定它是否可取。


推荐阅读