使用read_csv导入大型csv文件时,数据列丢失

问题描述

我正在使用read_csv()导入一个具有2400万行的2.2GB CSV文件。列之一(重要sign_date_time)是一个字符变量,未被读取,仅使用NA值导入。

我已经在sqlServer中打开了.csv文件,可以确认文件中是否存在数据。我已将大型文件在macOS终端中分成较小的块。当我再次使用read_csv()导入较小的文件时,数据也存在。

我正在RStudio中使用导入对话框来最大程度地减少键入错误。在对话框的“数据视图”部分中,它仅在所讨论的列中显示NA数据,并正在尝试将该列作为逻辑字段导入。我尝试将其手动更改为字符类型,但它仍然仅读取NA值。

这是对话框的屏幕截图:

screen shot of dialog box

关于可能发生的事情的任何想法吗?

谢谢。

保重, 杰夫

解决方法

最近我也被类似的问题咬了,所以这是基于经验的猜测。

默认情况下,如果一列的前1000个条目为NA,则readr::read_csv会自动将该列的所有值设置为NA。您可以通过设置guess_max参数来控制它。这是文档:

guess_max: Maximum number of records to use for guessing column types.

例如,

library(readr)
dat <- read_csv("file.csv",guess_max=100000)