R read_excel readxl 有时会错误地将数字转换为日期

Posted

技术标签:

【中文标题】R read_excel readxl 有时会错误地将数字转换为日期【英文标题】:R read_excel readxl sometimes incorrectly converts numbers to dates 【发布时间】:2018-04-13 07:22:11 【问题描述】:

当我使用 read_excel 将数据从 Excel 导入 R 时,一些数值列会自动转换为日期。

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

有没有办法关闭这个功能?除了在 r​​ead_excel 中使用“col_types”参数。

【问题讨论】:

col_types 是伴侣 您对使用明确为您所追求的目的而设计的论点有何反感?我一定是错过了什么 问题是,你的数据中有什么让 read_excel 认为这是一个日期?如果只是数字,这可能不会发生 @MichaelChirico 我正在使用 for 循环上传多个文件(30 多个 excel),它们可以有不同的结构(例如列名、列数)。因此,一对一定义 col_types 是可能的,但效率不高。 @docendodiscimus 这是一个非常好的观点。我在发布这个问题之前检查了 Excel 上的数据,该列仅包含 1 到 5 位整数。 【参考方案1】:

readxl 包与用于原始数据文件的readr 一样,有一个类型猜测器来确定如何读取 Excel 电子表格中的列。正如包小插曲中所述,猜测过程并不完美,尤其是与日期格式有关,因为它们存储为特殊类型的数字。

如包文档(以及 OP 上的 cmets)中所述,避免列类型猜测器的不准确猜测的方法是使用 read_excel() 上的 col_types 参数显式指定列类型。

【讨论】:

如果类型猜测失败,可能算法可以改进。我鼓励 OP 在 GitHub 上提出问题并尽可能分享他们的数据

以上是关于R read_excel readxl 有时会错误地将数字转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

R:knnImputation 给出错误

使用 readxl 时出错:“exdir”不存在

R 拆分EXCEL成多个文件

R读取含多位数的数据

基于日期在 R 中导入数据

R语言-v1-基础知识