【问题标题】:read.csv does not read complete fileread.csv 不读取完整文件
【发布时间】:2015-05-05 10:50:05
【问题描述】:

我正在努力使用read.csv 在 R 中读取一个大型 (22MB) 数据文件。我知道有很多类似的问题,但我发现的问题似乎都没有帮助我解决我的问题(onetwothree, 我的文件有 6 列,除了 1 列之外都是整数和 330,001 行。 我可以用excel打开文件。不再有空单元格,除了第一列(id)之外的每一列都有NA 值。

当我使用以下代码时:

mt <- read.csv("C:/path/master.csv", header=T, sep=",", encoding="utf-8")

我得到 79,024 行 将其更改为以下内容(请参阅here

mt <- read.csv("C:/Users/slebex/Desktop/PhB Data/master.csv", header=T, sep=",", quote="", encoding="utf-8")

将行数增加到 104,510,但读取所有整数作为因子(或添加 stringsAsFactors = F 时的字符)。

此外,使用以下代码会给出以下警告消息并仅加载包含 26,234 个元素的大字符

mt &lt;- readLines(file("C:/Users/slebex/Desktop/PhB Data/master.csv", encoding="utf-8"))

Warning messages:
1: invalid input found on input connection 'C:/path/master.csv' 
2: In readLines(file("C:/path/master.csv",  :
  incomplete final line found on 'C:/path/master.csv'

数据表如下所示 head(mt)

  id App_date Grant_date Prior_date Num_inventors Assignee
1  1       NA   18370630         NA             1     <NA>
2  2       NA   18371028         NA             1     <NA>
3  3       NA   18371028         NA             1     <NA>
4  4       NA   18380109         NA             1     <NA>
5  5       NA   18380203         NA             1     <NA>
6  6       NA   18380210         NA             1     <NA>

tail(mt)

         id App_date Grant_date Prior_date Num_inventors
79019 79019 19990826   20010206   19990826             2
79020 79020 19990127   20010206   19920501             2
79021 79021 19980213   20010206   19951002             4
79022 79022 19941108   20010206   19931108             4
79023 79023 19941208   20010206   19901025             1
79024 79024 19980918   20010206   19931214             1
                                                                                                                                 Assignee
79019                                                                                                          Novo Nordisk Biotech, Inc.
79020                                                                                          Trustees Of The University Of Pennsylvania
79021 Mohammad W. Katoot, Katoot, Administrator Karen Robbyn Goodan, Katoot, Administrator Ali Maroof, Katoot, Administrator Ahmed Maroof
79022                                                                                                                   Mcgill University
79023                                                                         The Trustees Of Columbia University In The City Of New York
79024                                                                                                         Centr Embrionalnikh Tkaney 

如您所见,Assignee 变量包含各种形式的标点符号。也许这会导致我不确定的问题(请参阅comments here)。我删除了所有双空格,将所有逗号更改为分号,并删除了所有引号,但这并没有帮助。

this question 之后,我做了以下操作

library(readr)
mt <- read_csv("C:/Users/slebex/Desktop/PhB Data/master.csv")

这给了我以下错误

Warning message:
660101 problems parsing 'C:/Users/slebex/Desktop/PhB Data/master.csv'. See problems(...) for more details.

尽管出现错误,数据集已完全加载,但我的两列突然完全由 NA 值组成。

如果相关请在 sessionInfo() 下方找到

R version 3.2.0 (2015-04-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_Singapore.1252  LC_CTYPE=English_Singapore.1252   
[3] LC_MONETARY=English_Singapore.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Singapore.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.2.0

欢迎提出建议

【问题讨论】:

  • 您是否尝试使用不带编码参数的 read.csv?并尝试包含 strip.white=T 参数。
  • 我在没有编码的情况下使用了各种无效的编码变体(= Unicode=utf-8)。我从来没有包含strip.white=T,因为我没有空单元格,但它当然可以工作。
  • 也可以试试 read.table from data.tabe
  • data.table 包中尝试fread()
  • 哦!有趣的问题,将这个案例作为一个问题提出给读者可能会有所帮助,因为我怀疑它以前出现过。 github.com/hadley/readr/issues

标签: r csv


【解决方案1】:

我找到了一个可行的解决方案,但我想有更好的选择来解决这个问题。基本上我在写字板中打开数据并意识到read.csv 的问题是某些Assignee 名称中有箭头符号。我认为这些被读取为中断左右,这会中断数据帧结构。删除所有这些箭头符号后,我就可以读取完整的数据集了。

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 2021-03-17
    • 2022-11-15
    • 1970-01-01
    • 2018-10-23
    • 2017-03-08
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多