我将一些JSON数据读入R,它将日期时间信息存储为单独的时间组件(年、月、小时等)。既然我已经有了不同的部分,那么创建一个POSIXlt对象似乎应该很容易,因为后者只是一个时间部分的列表。
as.POSIXlt不接受组件的命名列表或向量。可以通过向列表中添加适当的类和属性来创建一个POSIXlt,但是如果没有wday和yday元素,它就会失败,而我没有这些元素。
我知道我可以将列表转换为字符串并对其进行解析,但这是一个非常不优雅的解决方案,我认为我应该确保没有更好的方法。
编辑: ISOdatetime正是我要找的。谢谢!
发布于 2016-05-13 08:32:43
ISOdate是要使用的命令:
ISOdate(year, month, day, hour = 12, min = 0, sec = 0, tz = "GMT")此函数返回POSIXct类型。有关更多信息,请参见?ISOdate。
发布于 2016-05-13 09:15:10
ISOdate或ISOdatetime函数显然是要使用的函数,但既然您问到了如何以POSIXlt为起点来实现这一点,这里有一些技巧:
test <- as.POSIXlt("1970-01-01")
dput(test)
structure(list(sec = 0, min = 0L, hour = 0L, mday = 1L, mon = 0L,
year = 70L, wday = 4L, yday = 0L, isdst = 0L, zone = "PST",
gmtoff = NA_integer_), .Names = c("sec", "min", "hour", "mday",
"mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt",
"POSIXt"))
test$year <- 1941
test$mon <- 12
test$mday <-7
test
#[1] "3842-01-07 PST" Wrong offset
test$year <- 41
test
#[1] "1942-01-07 PST" "An infamous date"我怀疑这是“错误的”。因为我怀疑星期几或其他列表项是否得到了适当的调整。
https://stackoverflow.com/questions/37199321
复制相似问题