首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从时间组件列表创建POSIXlt

从时间组件列表创建POSIXlt
EN

Stack Overflow用户
提问于 2016-05-13 08:07:02
回答 2查看 68关注 0票数 0

我将一些JSON数据读入R,它将日期时间信息存储为单独的时间组件(年、月、小时等)。既然我已经有了不同的部分,那么创建一个POSIXlt对象似乎应该很容易,因为后者只是一个时间部分的列表。

as.POSIXlt不接受组件的命名列表或向量。可以通过向列表中添加适当的类和属性来创建一个POSIXlt,但是如果没有wday和yday元素,它就会失败,而我没有这些元素。

我知道我可以将列表转换为字符串并对其进行解析,但这是一个非常不优雅的解决方案,我认为我应该确保没有更好的方法。

编辑: ISOdatetime正是我要找的。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-05-13 08:32:43

ISOdate是要使用的命令:

代码语言:javascript
复制
ISOdate(year, month, day, hour = 12, min = 0, sec = 0, tz = "GMT")

此函数返回POSIXct类型。有关更多信息,请参见?ISOdate。

票数 1
EN

Stack Overflow用户

发布于 2016-05-13 09:15:10

ISOdate或ISOdatetime函数显然是要使用的函数,但既然您问到了如何以POSIXlt为起点来实现这一点,这里有一些技巧:

代码语言:javascript
复制
 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"

我怀疑这是“错误的”。因为我怀疑星期几或其他列表项是否得到了适当的调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37199321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档