【问题标题】:How to read csv file with unknown formatting and unknown encoding in R Program? (example file provided)如何在 R 程序中读取格式未知且编码未知的 csv 文件? (提供的示例文件)
【发布时间】:2020-08-26 14:34:23
【问题描述】:

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

Data

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

谢谢 阿马尔

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

【问题讨论】:

    标签: r csv encoding rstudio readr


    【解决方案1】:

    这是一个与 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 specifying the encoding)。

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

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

    【讨论】:

    • 感谢@peter 的回复。你的解决方案奏效了。完美的。问题是文件编码是 UTF-16LE,read_delim 目前无法读取。我使用基本的 read.delim 和 file() 来指定编码:read.delim(file("temp.csv", encoding = "UTF-16LE"), sep = "\t") 这对我有用。再次感谢您为我指明正确的方向。
    猜你喜欢
    • 2015-03-20
    • 2013-02-12
    • 1970-01-01
    • 2020-04-24
    • 2013-05-16
    • 2016-04-09
    • 2018-07-10
    • 2021-04-29
    相关资源
    最近更新 更多