我正在尝试使用.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的方法?
非常感谢
答案 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)