【发布时间】:2016-08-17 03:36:21
【问题描述】:
我一直在处理一个 Excel 文件,其中一列中包含日期,第二列中包含一天中的时间。在 Excel 中,日期列的格式为“日期”,时间列的格式为“时间”。在尝试了无数种将这些数据从 Excel 导入 R 的方法之后,我终于找到了一种方法来获取我想要的数据——日期和时间的 R data.frame 中的一列一起作为 POSIXct 类。首先,当使用 xlsx 包中的read.xlsx2 读取数据时,我将两列的colClasses 设置为"numeric"。这给了我,例如,日期为“16417”,时间为“0.3375000”。
其次,我通过这样做将它们合并为一列:
as.POSIXct(as.Date(Data1$Date + Data1$Time,
origin = "1970-01-01"),
"%Y-%m-%d %H:%M:%S") + 60*60*8
这给了我正确的日期和时间 (2014-12-13 08:06:00)。
但是,当我尝试对 second Excel 文件执行相同操作时,该文件的日期和时间位于单独的列中,但格式与第一个 Excel 文件中的格式相同(日期列格式为“日期”和时间列格式为“时间”),我得到不同的结果!对于第二个文件,Excel 中的内容,例如“12/13/2014”(日期列)和“8:06:00 AM”(时间列)导致日期为“41986”,而“0.3375000”为时间,一旦我将这些列添加在一起,它就会在 R 中变为“2084-12-14 08:06:00”!
发生了什么事?考虑到人们几乎总是使用 Excel 向我提供数据以在 R 中进行分析,处理将日期和时间从 Excel 一致地导入 R 的最佳方法是什么?为什么保存在 R 中的两个日期不同Excel然后用同样的方法导入R?
【问题讨论】:
-
如果你的日期栏是
12/13/2014,那么as.Date的格式应该是%m/%d/%Y -
其实我是导入为“数字”的,所以是
41986。这是让我感到困惑的事情之一,因为在另一个文件中,导入与数字相同的日期会给我16417。 -
@G.Grothendieck:我做到了。这并没有解决这个问题。