gpt4 book ai didi

r - R as.POSIXct()丢弃小时数分钟和秒数

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

我正在尝试使用R分析一些测量数据。我有一个.csv文件,其中包含超过200万行的测量值。这是一个例子:

2014-10-22 21:07:03+00:00,7432442.0
2014-10-22 21:07:21+00:00,7432443.0
2014-10-22 21:07:39+00:00,7432444.0
2014-10-22 21:07:57+00:00,7432445.0
2014-10-22 21:08:15+00:00,7432446.0
2014-10-22 21:08:33+00:00,7432447.0
2014-10-22 21:08:52+00:00,7432448.0
2014-10-22 21:09:10+00:00,7432449.0
2014-10-22 21:09:28+00:00,7432450.0

读完文件后,我想使用 as.POSIXct()将时间转换为正确的时间。对于小文件,它可以正常工作,但对于大文件,则不能。

我通过读取一个大文件,创建一小部分的副本,然后在正确的列上释放 as.POSIXct()来举例说明。我包括了文件的图像。如您所见,将其应用于 temp -variable时,它确实可以校正小时,分钟和秒。但是,将其应用于整个文件时,仅存储日期。 (还需要很多时间(超过2分钟))

什么会导致这种异常?这是由于某些系统限制所致,因为我正在笔记本电脑上运行它。

编辑

在Windows 7设备上,我运行R 3.1.3,这将导致此错误。但是,在运行R 3.0.2的Ubuntu 14.01上,保留了大文件的时间。只是注意到有Windows的较新版本(3.2.0),将进行更新并检查问题是否仍然存在。

最佳答案

您可以尝试下面的代码。
它会:

  • 将日期时间类型读取为字符,而不是因子
  • 通过引用更新

  • library(data.table)
    data <- fread("C:/RData/house2_electricity_main.csv")
    data[, V1 := as.POSIXct(V1)]

    最近有一个关于 fasttime::fastPOSIXct而不是 as.POSIXct的使用的问题,它可以进一步提高速度。

    至于标题问题,有了POSIXct,您可以相当自由地将其取整,例如函数 yearmonthmday ...
    data[, .SD, by = .(year(V1),month(V1),mday(V1))]

    关于r - R as.POSIXct()丢弃小时数分钟和秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038701/

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