Необычный конец строки, приводящий к ошибке

Я пытаюсь загрузить большую базу данных о такси в Нью-Йорке, общедоступную на веб-сайте NYC TLC.

library(data.table)
feb14 <- fread('https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv', header = T)

Выполнение вышеуказанного кода успешно загружает данные (что занимает несколько минут), но затем не удается проанализировать из-за внутренней ошибки. Я пытался удалить header = T также.

Есть ли обходной путь, чтобы справиться с "необычными окончаниями строк" ​​в fread?

Error in fread("https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv",  : 
  Internal error. No eol2 immediately before line 3 after sep detection.
In addition: Warning message:
In fread("https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv",  :
  Detected eol as \n\r, a highly unusual line ending. According to Wikipedia the Acorn BBC used this. If it is intended that the first column on the next row is a character column where the first character of the field value is \r (why?) then the first column should start with a quote (i.e. 'protected'). Proceeding with attempt to read the file.

3 ответа

Решение

Иногда другие параметры, такие как read.csv/read.table, могут вести себя по-другому... так что вы всегда можете попробовать это. (Может быть, исходный код говорит, почему, не смотрел на это).

Другой вариант - использовать readLines() для чтения в таком файле. Насколько я знаю, здесь нет никакого анализа / форматирования. Так что, насколько я знаю, это самый простой способ прочитать файл

Наконец, быстрое решение: используйте опцию 'skip = ...' в fread или управляйте концом, говоря 'nrows = ...'.

Кажется, что проблемы могут быть вызваны наличием пустой строки между заголовком и данными в исходном файле.csv. Удаление строки из.csv с использованием notepad++, похоже, исправило это для меня.

Есть что-то подозрительное с fread, data.table это быстрее, больше ориентирован на производительность для чтения больших файлов, однако в этом случае поведение не является оптимальным. Вы можете поднять этот вопрос на GitHub

Я могу воспроизвести проблему на загруженном файле даже с nrows = 5 или даже с nrows = 1 но только если придерживаться оригинального файла. Если я скопирую и вставлю первые несколько строк, а затем попробую, проблема исчезнет. Проблема также уходит, если я читаю прямо из Интернета с небольшим nrows, Это даже не encoding проблема, следовательно, моя рекомендация поднять проблему.

Я пытался прочитать файл с помощью read.csv а также 100,000 строки без проблем и менее 6 секунд.

feb14_2 <- read.csv("https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv", header = T, nrows = 100000)

header = T является избыточным аргументом, поэтому не будет иметь никакого значения для fread но необходим для read.csv,

Другие вопросы по тегам