gpt4 book ai didi

r - 将整数转换为 ITime?

转载 作者:行者123 更新时间:2023-12-01 21:30:46 29 4
gpt4 key购买 nike

我正在考虑使用新的 data.table日期和时间格式。自 ITime在底层存储为整数(自午夜以来的秒数):

x <- as.ITime( "10:25:00" )
i <- as.integer( x )
i
[1] 37500

看起来应该很容易将整数(假设它小于 24*60*60)转换为 ITime ,但我没有找到如何:

as.ITime( i )
Error in as.POSIXlt.numeric(x, ...) : 'origin' must be supplied

as( i, "ITime" )
Error in as(i, "ITime") :
no method or default for coercing “integer” to “ITime”

提供一个原点(我收集的信息被传递给 as.POSIX... )确实有帮助,但即使如此,如果您还指定 tz ,它也只能给出正确的值(无论如何对于我的语言环境)作为“UTC”:

as.ITime( i, origin = "1970-01-01 00:00:00" )
[1] "20:25:00"

as.ITime( i, origin = "1970-01-01 00:00:00", tz = "UTC" )
[1] "10:25:00"

# note that the date seems necessary but irrelevant here
as.ITime( i, origin = "2000-01-01 00:00:00", tz = "UTC" )
[1] "10:25:00"

我所说的与我有时使用 chron::times 类似。 :

x <- chron::times( "10:25:00" )

n <- as.numeric( x )
n
[1] 0.4340278

chron::times( n )
[1] 10:25:00

类似的方法(除了使用整数而不是数字/ double / float )可用于 ITime类?

请注意,我知道 IDate 存在相同的“需要来源”问题, Date等等,但这对我来说更有意义,因为 origin="1970-01-01"与使用“午夜”作为时间起源相比,这个标准要差很多(我使用一些数据源,对于哪个日期应该被称为“起源”有不同的想法)。

最佳答案

这有效:

library(data.table)
DT = data.table(int = 37500L)
DT[, setattr(int, "class", "ITime")]

# int
# 1: 10:25:00

int = 37500L
setattr(int, "class", "ITime")

# "10:25:00"

关于r - 将整数转换为 ITime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43730996/

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