【问题标题】:Is there a way to generate just random "times"?有没有办法生成随机的“时间”?
【发布时间】:2018-07-26 14:36:45
【问题描述】:

我知道您可以使用 as.POSIXct 来生成日期和时间。但我只想生成时间 ex) 05:16 (min:sec) 有谁知道该怎么做?我暂时找不到任何包裹。

【问题讨论】:

  • 时间基本上是两个数字[0-23]和[0-59],所以生成两个数字你就有时间了,另一种方法是弄清楚小时实际上是分钟,所以生成范围@987654323的数字@ 然后使用n/24 获取小时,n%60 获取分钟
  • R 没有内置数据类型,只有没有日期的时间。它只有一个日期+时间类。不确定您希望在生成这些时间后如何处理这些时间,但如果您多说一些,我们或许可以提出解决方案。
  • @MrFlick 是的,我正在运行一个模拟,我想在 0:00 到 9:59(分:秒)之间随机采样(n = 30)。这就是我想做的全部
  • 所以只需生成一个随机变量,即自午夜以来的分钟数,并将其从 0 变为 599 (9*60+59)。

标签: r random time sampling


【解决方案1】:

lubridate是目前应对时代最友好的包。只需生成您需要的间隔并从中采样:

library(lubridate)

> sample(as.duration(0:599), 30)
[1] "345s (~5.75 minutes)" "277s (~4.62 minutes)" "74s (~1.23 minutes)" 
[4] "15s"                  "571s (~9.52 minutes)" "186s (~3.1 minutes)" 
[7] "45s"                  "355s (~5.92 minutes)" "121s (~2.02 minutes)"
[10] "488s (~8.13 minutes)" "179s (~2.98 minutes)" "371s (~6.18 minutes)"
[13] "515s (~8.58 minutes)" "31s"                  "346s (~5.77 minutes)"
[16] "0s"                   "398s (~6.63 minutes)" "84s (~1.4 minutes)"  
[19] "160s (~2.67 minutes)" "457s (~7.62 minutes)" "94s (~1.57 minutes)" 
[22] "212s (~3.53 minutes)" "591s (~9.85 minutes)" "576s (~9.6 minutes)" 
[25] "348s (~5.8 minutes)"  "314s (~5.23 minutes)" "563s (~9.38 minutes)"
[28] "509s (~8.48 minutes)" "538s (~8.97 minutes)" "71s (~1.18 minutes)" 

检查函数 interval() 和 ms() 以了解其他可能的方法来获得您想要的。

但正如 cmets 中所指出的,如果您需要的只是以秒为单位的随机间隔,那么使用整数会更简单、更方便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-21
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2015-05-05
    • 2017-05-15
    相关资源
    最近更新 更多