Я импортирую xlsx
2007 таблицы в R 3.2.1patched
с использованием пакета readxl 0.1.0
под Windows 7 64
. Размер таблиц составляет порядка 25 000 строк на 200 столбцов.Указание типов столбцов при импорте данных xlsx в R с пакетом readxl
Функция read_excel()
работает с удовольствием. Моя единственная проблема заключается в том, что его назначение класса столбца (типа данных) для малозаселенных столбцов. Например, данный столбец может быть NA для 20 000 строк, а затем примет значение символа в строке 20,001. read_excel()
по умолчанию используется тип столбца с числовым номером при сканировании первых n строк столбца и только для определения NAs
. Данные, вызывающие проблему, являются символами в столбце, присвоенном числовой. Когда достигнут предел ошибки, выполнение останавливается. Я действительно хочу данные в разреженных столбцах, поэтому установка предела ошибки выше не является решением.
Я могу определить неприятные столбцы, просмотрев предупреждающие сообщения. И read_excel()
имеет возможность для утверждения типа данных столбца, установив аргумент col_types
в соответствии с пакетом документации:
Либо NULL
угадать из таблицы или вектора символов, содержащего blank
, numeric
, date
или text
.
Но значит ли это, что я должен построить вектор длиной 200 населен почти в каждой позиции с blank
и text
в кучки позициях, соответствующих столбцам нарушителями?
Возможно, есть способ сделать это в парах строк R
. Создайте вектор требуемой длины и заполните его blank
s. Может быть, еще один вектор, содержащий числа столбцов, которые должны быть загнаны в text
, а затем ... Или, возможно, можно вызвать для read_excel()
только столбцы, для которых его догадки не так желательны.
Буду признателен за любые предложения.
Заранее спасибо.
Бывают случаи, когда было бы полезно контролировать количество строк, отсканированных для определения типа данных. Однако в этой задаче может потребоваться сканирование очень далеко вниз по малонаселенным коллегам. Я думаю, что основная проблема - удобный способ указать желаемый тип данных нескольких столбцов, где поведение по умолчанию не требуется. В своем ответе на http://stackoverflow.com/q/6099243 Mikko, похоже, предлагает способ сделать это для read.xlsx2 в пакете xlsx. Возможно, подобные работы для readxl. Большое спасибо за проверку источника для readxl_xlsx_col_types. – jackw19