gpt4 book ai didi

r - Openxlsx convertToDateTime 省略了大数据集的时间

转载 作者:行者123 更新时间:2023-12-04 03:12:08 26 4
gpt4 key购买 nike

我正在尝试使用 openxlsx 读取包含时间序列数据的大型 excel 文件。我发现如果数值向量参数超过一定数量的元素,convertToDateTime 会开始省略时间。我的代码如下所示:

ts <- readWorkbook(my.wb, sheet = as.character(r[["dSheet"]]), 
startRow = 2, cols = 1,
colNames=FALSE, detectDates=FALSE)
colnames(ts) <- c("dt")
> head(convertToDateTime(ts$dt[1:30830]))
[1] "2016-11-23 15:20:00 MST" "2016-11-23 15:24:59 MST"
[3] "2016-11-23 15:30:00 MST" "2016-11-23 15:34:59 MST"
[5] "2016-11-23 15:40:00 MST" "2016-11-23 15:45:00 MST"

> head(convertToDateTime(ts$dt[1:30840]))
[1] "2016-11-23 MST" "2016-11-23 MST" "2016-11-23 MST" "2016-11-23 MST"
[5] "2016-11-23 MST" "2016-11-23 MST"

附带问题:如果您查看我原始代码中的元素 #2(2016-11-23 15:24:59),这实际上应该是 15:25。如果有解决此问题的简单方法,请告诉我...

这是一个工作示例:

>library("openxlsx")
>dates <- runif(31000, 41000, 42000)
>head(convertToDateTime(dates[1:5000]))

[1] "2013-05-29 09:34:28 MDT" "2014-07-01 03:52:13 MDT"
[3] "2012-06-02 09:27:47 MDT" "2012-05-06 13:42:04 MDT"
[5] "2014-09-26 04:50:36 MDT" "2013-10-26 03:14:00 MDT"

> head(convertToDateTime(dates[1:10000]))
[1] "2013-05-29 MDT" "2014-07-01 MDT" "2012-06-02 MDT" "2012-05-06 MDT"
[5] "2014-09-26 MDT" "2013-10-26 MDT"

是否有针对此行为的修复方法,或者您会建议尝试一种完全不同的方法(实现转换)?

预先感谢您的帮助!

最佳答案

我在 Converting numeric time to datetime POSIXct format in R 中找到了解决我的问题的方法.只需将 Excels 小时数乘以 3600 *24 即可获得以秒为单位的时间跨度并使用 as.POSIXCT 可以正常工作:

> dates <- runif(30000, 41000, 42000)
> ts1 <- convertToDateTime(dates)
> ts2 <- as.POSIXct(dates*3600*24, tz="GMT", origin = "1900-01-01")
> head(ts1)
[1] "2013-10-04 MDT" "2012-04-04 MDT" "2014-06-12 MDT" "2013-01-24 MST"
[5] "2012-09-12 MDT" "2014-11-11 MST"
> head(ts2)
[1] "2013-10-06 02:43:24 GMT" "2012-04-06 11:59:54 GMT"
[3] "2014-06-14 16:43:06 GMT" "2013-01-26 00:25:17 GMT"
[5] "2012-09-14 07:26:47 GMT" "2014-11-13 18:52:03 GMT"

因为这太棒了,我不明白 openxlsx 的 convertToDateTime 函数工作流程的优势。将 as.POSIXct 与 openxlsx 的 getDateOrigin() 结合使用也解决了我在原始问题中描述的舍入问题。

关于r - Openxlsx convertToDateTime 省略了大数据集的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44274665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com