在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
添加随机时间
发布于 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创建一个字符串,它确实创建了一个字符串。在那些你不能再做数学运算的机器上。因此,先做数学运算,然后再打印或格式化。
https://stackoverflow.com/questions/50866366
复制相似问题