1

我有一个 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

虽然我可以在事后轻松删除日期(我不想要),但我的问题是秒的十进制级别丢失了。我需要保留它们。我保持自定义时间格式不变的正确方法是什么?

谢谢你。

4

2 回答 2

0

使用格式.POSIXt

 write.csv( format( as.POSIXct("1899-12-31 00:06:18.123"), "%H:%M:%OS3"), file="")
"","x"
"1","00:06:19.123"
于 2015-07-22T20:14:04.780 回答
0

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

关于 1899-12-31:Excel 日期/时间实际上只是表示自 1900-01-00 以来的天数(是的,第 00 天!-参见http://www.cpearson.com/excel/datetime .htm)。小数天表示小时、分钟、秒和毫秒。因此,没有日期的时间仅表示为小数 0.x,它被转换为 1899-12-31 %HH:%MM:%SS.nnn,因为 1900-01-00 实际上并不存在。如果您想在读取日期时查看基础(小数)数字,您可以手动指定要在调用中numeric使用的列类型,例如forceConversion = TRUEreadWorksheetreadWorksheet(..., colTypes = c(..., "numeric", ...), forceConversion = TRUE)

关于 CSV 导出:当我使用write.csv2列时POSIXct(由对 的调用产生readWorksheet)似乎被导出,包括毫秒。

于 2015-07-28T15:09:30.483 回答