首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整数到POSIXlt

整数到POSIXlt
EN

Stack Overflow用户
提问于 2013-07-02 05:20:01
回答 2查看 5.2K关注 0票数 1

我开始掌握基数R如何处理日期/时间,但仍然有一些不确定性。

使用以下数据集(来自气象数据),我可以使用as.character()函数将其转换为POSIXct和POSIXlt。Date.Time是以yymmddhhmm格式提供的。

代码语言:javascript
复制
Date.Time <- c(1107151300, 1107151400, 1107151500, 1107151600, 1107151700, 1107151800)
WindSpd <-   c(11.8, 14.5, 14.9, 14.1, 15.2, 17.1)

##Using as.character()##
#Note POSIXlt this time
w <- data.frame(Date.Time, WindSpd)
w$Date.Time <- as.POSIXlt(as.character(w$Date.Time), format = '%y%m%d%H%M', 
origin = '2011-07-15 13:00:00')
w

#Now POSIXct
x <- data.frame(Date.Time, WindSpd)
x$Date.Time <- as.POSIXct(as.character(x$Date.Time), format = '%y%m%d%H%M', 
origin = '2011-07-15 13:00:00')
x

但是,为了转换为日期而将整数转换为字符似乎很愚蠢。当我尝试直接转换整数时,我得到了所有的NA值。

代码语言:javascript
复制
##Trying to coerce the intergers##
#note POSIXlt this time
y <- data.frame(Date.Time, WindSpd)
y$Date.Time <- as.POSIXlt(y$Date.Time, format = '%y%m%d%H%M', 
origin = '2011-07-15 13:00:00')
y

#note POSIXct this time
z <- data.frame(Date.Time, WindSpd)
z$Date.Time <- as.POSIXct(z$Date.Time, format = '%y%m%d%H%M', 
origin = '2011-07-15 13:00:00')
z

显然,这不是一个关键问题,因为我已经找到了一个可行的解决方案。无论如何,我都想知道,因为我正在努力成为一名betteR codeR。在将整数转换为R date类时,我做错了什么?此外,它们的优势是否与POSIXltPOSIXct相关?根据帮助文章,听起来唯一的区别是它们是如何存储的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-02 05:51:15

有一个as.POSIXct.numeric方法:

代码语言:javascript
复制
 > methods(as.POSIXct)
[1] as.POSIXct.date    as.POSIXct.Date    as.POSIXct.dates   as.POSIXct.default
[5] as.POSIXct.numeric as.POSIXct.POSIXlt

它使用数字输入作为从原点偏移的秒数。

代码语言:javascript
复制
> as.POSIXct(1107151300, origin = '2011-07-15 13:00:00')
[1] "2046-08-14 19:01:40 PDT"
> as.POSIXct('1107151300', format = '%y%m%d%H%M', 
                          origin = '2011-07-15 13:00:00')
[1] "2011-07-15 13:00:00 PDT"

所以,是的,您确实需要使用as.character

票数 7
EN

Stack Overflow用户

发布于 2013-07-02 05:43:50

尝试删除格式规范(我相信它只在字符输入时需要):

代码语言:javascript
复制
zz <- as.POSIXct(Date.Time, origin = '2011-07-15 13:00:00')

如果您使用正确的时区从'2011-07-15 13:00:00‘以实际秒数的形式提供Date.Time,它将起作用

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

https://stackoverflow.com/questions/17413915

复制
相关文章

相似问题

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