首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将时间添加到R中的时间

将时间添加到R中的时间
EN

Stack Overflow用户
提问于 2018-06-15 05:45:37
回答 1查看 7.4K关注 0票数 4

在R中,日期和时间非常混乱,我只想随机生成一些24小时的时钟时间,然后将它们相加。

随机生成:

library(lubridate)

hourTime <- as.list(format(seq.POSIXt(as.POSIXct(Sys.Date()),
                                    as.POSIXct(Sys.Date()+1),
                                    by = "5 min"),
                         "%H:%M", tz="GMT"))

正在尝试转换为日期:

df$ARRIVALTIME <- replicate(1000, sample(hourTime, 1, replace=F))

尝试添加到上一次:

df$TRETTIME <- df$ARRIVALTIME +
    (hours(sample(1:3, 1000, replace=T)) + minutes(sample(1:60, 1000, replace=T)))

我猜这是因为我没有一个格式化的时间对象。如何向ARRIVALTIME添加随机时间

EN

回答 1

Stack Overflow用户

发布于 2018-06-15 05:51:55

它更简单--底层的POSIXt要么是长形式的/按元素的POSIXlt (在这里没有用到),要么是紧凑的POSIXct --它只是一个双精度型(也称为numeric) --你可以“计算”它。

所以你可以随意创建时间,然后只需添加实际的值:

R> now <- Sys.time()
R> set.seed(123)
R> deltas <- cumsum(rnorm(5))    # just five N(0,1), added up 
R> 
R> now
[1] "2018-06-14 16:50:36.55687 CDT"
R> 
R> now + deltas
[1] "2018-06-14 16:50:35.996404 CDT" "2018-06-14 16:50:35.766226 CDT"
[3] "2018-06-14 16:50:37.324935 CDT" "2018-06-14 16:50:37.395443 CDT"
[5] "2018-06-14 16:50:37.524731 CDT"
R> 

一旦你理解了基本类型,就不需要什么附加的包了,因为一切都只需要几秒钟的时间。所以加上一个小时,就是60*60,依此类推。附加软件包仍然是有用的工作日约定、假日和附加解析器。

您在代码片段中遇到的问题是format()销毁了Datetime对象:您要求R创建一个字符串,它确实创建了一个字符串。在那些你不能再做数学运算的机器上。因此,先做数学运算,然后再打印或格式化。

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

https://stackoverflow.com/questions/50866366

复制
相关文章

相似问题

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