来自xlsx的时间值对于相同格式的2个文件的解释不同

时间:2015-04-06 18:33:05

标签: r

我有两个excel(xlsx)文件,其中包含格式为h:mm:ss.000的时间数据。据我所知,文件格式是相同的,但导入R后我得到的值不同。

使用gdata::read.xls(),时间列作为因素导入;但是对于某些文件,它的格式为hh:mm:ss.000,而在其他文件中,它只是数字(我认为是epoch,除非我尝试使用as.POSIXct()转换,我得到的时间是关闭的10分钟 - 可能是舍入错误?我正在使用as.numeric(as.character(x))转换因子。)

我已经用Google搜索,无法找到可能导致此问题的原因。 excel列格式完全相同。

我在这里分享了这些文件:http://www.filedropper.com/badexcel

ff3正在按我的意愿进入(h:mm:ss.000),而ff10以数字形式读入(尽管两者都是因素)。

代码:

require(gdata)
require(dplyr)

ff3 <- read.xls("ff3.xlsx", sheet = 2)
ff10 <- read.xls("ff10.xlsx", sheet = 2)
ff3 <- select(ff3, Code:Timestamp)
ff3<- filter(ff3, Timestamp!="[...]")
ff10 <- select(ff10, Code:Timestamp)
ff10 <- filter(ff10, Timestamp!="[...]")
head(ff3$Timestamp)
head(ff10$Timestamp)
as.POSIXct(as.numeric(as.character(devdata$Timestamp)), origin = "1970-01-01", tz="MST")

结果:

  

头(FF3 $时间戳)

     

[1] 17:02:40.160 17:03:00.420 17:03:52.980 17:04:00.760 17:04:10.850 17:04:14.270   12级:[...] 17:02:40.160 17:03:00.420 17:03:52.980 17:04:00.760 ... 17:07:13.350

     

头(FF10 $时间戳)

     

[1] 42097.360296296298000 42097.360625347224000 42097.361245254629000 42097.361760763888000   [5] 42097.362458912037000 42097.362762384262000   15级:[...] 42097.360296296298000 42097.360625347224000 ... 42097.364464467595000

     

as.POSIXct(as.numeric(as.character(devdata $ Timestamp)),origin =“1970-01-01”,tz =“MST”)

     

[1]“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”    [4]“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”    [7]“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”   [10]“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”   [13]“1970-01-01 04:41:37 MST”“1970-01-01 04:41:37 MST”

问题:为什么导入结果不同,我如何确保它们是相同的 要么 使用as.POSIXct()的数值没有正确转换有什么问题?

修改 我已经尝试了Joran建议的其他xls阅读包,并得到了相同的结果,暗示它是关于xlsx文件的东西。我尝试将它们保存为CSV并且时间格式相同(hh:mm:ss.000)。任何excel专家都知道可能导致这种情况的原因是什么?

对于任何试图打开它们的人来说,循环引用是有意的(我允许单次迭代),但没有必要启用循环引用来查看数据。

0 个答案:

没有答案