R read_excel readxl иногда неправильно конвертирует числа в даты

Когда я использую read_excel для импорта данных из Excel в R, некоторые числовые столбцы автоматически преобразуются в даты.

# e.g.
5600 to 1915-05-01

Есть ли способ отключить эту функцию? Кроме использования аргумента col_types в read_excel.

col_types это товарищ

Dom 13.04.2018 09:23

каково ваше отвращение к использованию аргумента, специально разработанного для той цели, которую вы преследуете? Я должно быть что-то упускаю

MichaelChirico 13.04.2018 09:35

Вопрос в том, что в ваших данных заставляет read_excel думать, что это дата? Если бы это были только числа, этого, вероятно, не было бы

talat 13.04.2018 09:47

@MichaelChirico Я загружаю несколько файлов (30+ Excel) с помощью цикла for, и они могут иметь разные структуры (например, имена столбцов, количество столбцов). Следовательно, определение col_types по одному возможно, но не очень эффективно.

LeGeniusII 16.04.2018 01:15

@docendodiscimus Это действительно хороший аргумент. Я проверил данные в Excel перед тем, как опубликовать этот вопрос, и столбец содержит только целые числа от 1 до 5 цифр.

LeGeniusII 16.04.2018 01:26

понял, и это серьезное беспокойство. Я согласен с @docendodiscimus в этом случае - стоит изучить, что привело read_excel в заблуждение

MichaelChirico 16.04.2018 03:33

@MichaelChirico - read_excel() сбил с толку тот факт, что время даты - это особая числовая форма, поэтому для угадывающего типа непросто отличить число от числа, которое на самом деле является датой.

Len Greski 16.04.2018 04:31

@LenGreski, безусловно, в подавляющем большинстве используемых сегодня наборов данных не используются данные за 1915 год ... Я знаю, что ничто не будет идеальным для этого случая, но улучшения всегда нужно искать.

MichaelChirico 16.04.2018 06:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
2 535
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пакет readxl, как и readr для файлов необработанных данных, имеет средство определения типа, чтобы определить, как читать столбцы в электронной таблице Excel. Как отмечено в виньетке пакета, процесс угадывания не идеален, особенно в том, что касается форматов даты, поскольку они хранятся как числа особого типа.

Как указано в документации пакета (а также в комментариях к OP), способ избежать неточных догадок от угадывающего типа столбца - это явно указать типы столбцов с аргументом col_types на read_excel().

если угадывающий тип терпит неудачу, вероятно, алгоритм можно улучшить. Я призываю OP подать вопрос на GitHub и, если возможно, поделиться своими данными.

MichaelChirico 16.04.2018 03:35

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