如何将Excel中的自定义时间格式值导入到R?

我有一个R脚本循环并使用XLConnect包将多个Excel电子表格读取到R中。 单独的电子表格被组合成一个大的数据框架,然后写出一个.csv文件,以便在Excel中进一步使用。

newDf <- readWorksheetFromFile(filename,sheet=newid,header=TRUE, startRow=1,endRow=17,startCol=1,endCol=6) 

Excel文件具有自定义格式的一列时间值:HH:MM:SS.000

即00:18:06.264

当我打开生成的csv文件时,此列的值显示为,例如,

 1899-12-31 00:06:18 

虽然我可以很容易地删除date(我不想要的),事实上,我的问题是秒的小数点丢失。 我需要保持他们。 什么是我保持自定义时间格式完整的正确方法?

谢谢。

使用format.POSIXt

  write.csv( format( as.POSIXct("1899-12-31 00:06:18.123"), "%H:%M:%OS3"), file="") "","x" "1","00:06:19.123" 

由于0.2-10版本的XLConnect实际上是在Excel中读取date/时间的毫秒部分。 默认情况下,它们不会显示在R中。您可以使用options(digits.secs = 6)在R控制台中相应地显示它们。

关于1899-12-31:Exceldate/时间实际上只是表示自1900-01-00以来的天数的数字(是的,第00天! – 见http://www.cpearson.com/excel/datetime .htm )。 分数天代表小时,分钟,秒和毫秒。 没有date的时间因此仅表示为分数0.x,其被翻译成1899-12-31%HH:%MM:%SS.nnn,因为1900-01-00实际上不存在。 如果您想在date读取时看到底层(分数)数字,您可以手动指定列types为numeric并在调用readWorksheet使用forceConversion = TRUE ,例如readWorksheet(..., colTypes = c(..., "numeric", ...), forceConversion = TRUE)

关于CSV导出:当我使用write.csv2POSIXct列(由调用readWorksheet )似乎被导出,包括毫秒。