#r #import #readr
#r #импорт #readr
Вопрос:
Я импортирую csv-файл объемом 2,2 ГБ с 24 миллионами строк, используя read_csv(). Один из столбцов (vital sign_date_time), символьная переменная, не считывается и импортируется только со значениями NA.
Я открыл файл .csv на SQLServer и могу подтвердить, что данные есть в файле. Я разбил большой файл на более мелкие фрагменты в терминале macOS. Когда я импортирую файлы меньшего размера, снова с помощью read_csv(), данные также присутствуют.
Я использую диалоговое окно импорта в RStudio, чтобы свести к минимуму любые опечатки. В разделе просмотра данных диалогового окна отображаются только данные NA в рассматриваемом столбце, и он пытается импортировать столбец как логическое поле. Я попытался вручную изменить это на символьный тип, и он по-прежнему считывает только значения NA.
Вот скриншот диалогового окна:
Есть идеи о том, что может происходить?
Спасибо.
Береги себя, Джефф
Комментарии:
1.У вас такая же проблема с использованием data.table
data.table::fread()
и / или vroomvroom::vroom()
?2. получаете ли вы какие-либо предупреждения после импорта файла?
3. Я не пробовал vroom(), но у меня была такая же проблема с fread().
4. Я получаю кучу ошибок (84 миллиона / 24 миллиона строк, но все они имеют дело с другим столбцом, который, как известно, отсутствует во многих строках).
5. @jared_mamrot Спасибо за предложение!!!
fread
как будто взорвался / истек тайм-аутread_csv
, ноvroom
сработал как по волшебству. Удивительно, что одна функция работает, а другая нет. Я также думал, чтоvroom
это должно было быть включеноread_csv
сейчас.
Ответ №1:
Недавно я столкнулся с аналогичной проблемой, так что это предположение, основанное на этом опыте.
По умолчанию, если 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)
Комментарии:
1. Винсент, ты попал в точку! Это была проблема. Первые 399 тыс. строк были нулевыми. После настройки guess_max на 400 КБ он работал как чемпион! Спасибо!