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

如何将自定义时间格式值从Excel导入R?,r,excel,time,xlconnect,R,Excel,Time,Xlconnect,我有一个R脚本,它使用XLConnect包循环并将多个Excel电子表格读入R。各个电子表格组合成一个大数据框,然后作为.csv文件写入Excel中以供进一步使用 newDf <- readWorksheetFromFile(filename,sheet=newid,header=TRUE, startRow=1,endRow=17,startCol=1,endCol=6) 虽然我可以很容易地在事后删除日期(我不想要),但我的问题

我有一个R脚本,它使用XLConnect包循环并将多个Excel电子表格读入R。各个电子表格组合成一个大数据框,然后作为.csv文件写入Excel中以供进一步使用

newDf <- readWorksheetFromFile(filename,sheet=newid,header=TRUE,
                            startRow=1,endRow=17,startCol=1,endCol=6) 
虽然我可以很容易地在事后删除日期(我不想要),但我的问题是秒的小数级别丢失了。我需要保留它们。对于我来说,保持自定义时间格式不变的正确方法是什么

谢谢。

使用format.POSIXt

 write.csv( format( as.POSIXct("1899-12-31 00:06:18.123"), "%H:%M:%OS3"), file="")
"","x"
"1","00:06:19.123"
使用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-10XLConnect实际上读取Excel中日期/时间的毫秒部分。默认情况下,它们不显示在R中。您可以使用
选项(digits.secs=6)
在R控制台中相应地显示它们

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


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

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

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


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

什么是“生成的CSV文件”?这应该生成一个R数据对象,而不是csv文件。在读取所有Excel工作表并将其合并到一个大数据框(使用rbind)后,我使用write.csv再次在Excel中查看结果。没有小数的时间就是我打开它时看到的时间。什么是“生成的csv文件”?这应该生成一个R数据对象,而不是csv文件。在读取所有Excel工作表并将其合并到一个大数据框(使用rbind)后,我使用write.csv再次在Excel中查看结果。没有小数的时间就是我打开它时看到的时间。