openxlsx函数read.xlsx无法正确读取R中的日期

时间:2018-07-25 14:24:55

标签: r

我正在尝试使用.xlsx包在R中加载openxlsx文件。不幸的是,电子表格在日期栏中有一些奇怪的格式,其格式为“月/日/年”,例如9/21/2014。 (Excel将此识别为日期格式)。使用read.xlsx导入时,会错过月份和日期,仅将年份保留为数字列。我怀疑这与/字符有关。

df <- read.xlsx("The File.xlsx", sheet = "Sheet 1")

head(df)
  Number       Type         Other.Type     Date
    1           902             611        2014     
    2           902             611        2014   
    3           902             611        2014    
    4           795             966        2014 
 ...

我尝试添加detectDates = TRUE参数,但这仅给出NAs

我无法编辑电子表格,因为数据属于其他人,并且我刚刚可以访问它。是否有与colClasses包中的xlsx自变量等效,或者是否有其他将数据导入R的方法?

非常感谢

2 个答案:

答案 0 :(得分:1)

这个答案只是为了完整性,以防万一其他人最终遇到类似的问题。感谢@StéphaneLaurent,他在评论中提供了建议。

切换到readxl软件包可以解决问题。请注意,请确保检查帮助文件中的read_xlsx调用;特别是对于col_types参数。该程序包将尝试在导入时设置每个矢量的数据类型,如果有任何不一致,它将产生警告,例如

In read_fun(path = path, sheet_i = sheet, limits = limits,  ... :
Expecting numeric in F1107 / R1107C6: got '?'

这些不是一个严重的问题,因此请不要使用该软件包推迟。谢谢,史黛芬!


编辑〜1周后

在另一个具有不同数据的脚本中使用readxl之后,我转回到使用openxlsx作为基本的入门包。尽管readxl可以很好地解决我的原始问题,但它抛出的warnings()的数量确实令人讨厌。在第二种情况下,它变得不可用;每次我运行一行代码(是否涉及readxl),都会触发有关以下内容的警告: Unknown or uninitialised column。这只能通过关闭R会话并重新开始来解决。我敢肯定,这只是因为我在readxl上犯了一个小错误,但是除非遇到与上述格式错误的日期相同的情况,否则我会坚持使用openxlsx,我通常发现它简单易用。

答案 1 :(得分:1)

将excel中的格式更改为:日期“2012-03-14”后,这对我有用

library(openxlsx)
read.xlsx(xlsxFile = "The File.xlsx", sheet = "sheet 1" , detectDates = TRUE)