【问题标题】:Generate date and time between a given time frame在给定时间范围内生成日期和时间
【发布时间】:2020-12-20 06:04:25
【问题描述】:

我想在 2019 年 1 月 1 日到 2020 年 6 月 30 日之间以“MM/DD/YYYY mm:ss”格式生成大量日期时间序列(例如 1,000 个),但以不规则间隔(在连续观察),然后将数据作为新列附加到相同行长的数据框中。所需的输出应如下所示:

 id mem_id      phone     time  
  2    549 2023406636    12/01/2019 13:41
  2    549 2023406636    12/07/2019 02:45
  3    222 2023402289    12/25/2019 11:27
  3    222 2023402289    01/12/2020 08:30
  2    549 2023406636    01/14/2020 10:54
  3    222 2023402289    03/12/2020 12:34

我参考了timeDatetimeDate 包(和this earlier thread),但不知道怎么做。如果有人能对此有所了解,将不胜感激。

【问题讨论】:

  • 你说“生成一个系列”。怎么随机?通常您已经知道时间戳(并且您可能希望从一种格式转换为另一种格式),在这里您不会说它们应该来自哪里。
  • 它们可以在指定时间范围内的任何时间出现,但连续观察之间的间隔不规则。

标签: r date time series


【解决方案1】:

执行此操作的一种方法是在 start_dateend_datesample n 值之间生成 1 秒间隔的序列。

start_date <- as.POSIXct('2019-01-12', format = '%Y-%m-%d', tz = 'UTC')
end_date <- as.POSIXct('2020-06-30', format = '%Y-%m-%d', tz = 'UTC')
n <- 1000

date_Time <- sort(sample(seq(start_date, end_date, by = 'sec'), n))
head(date_Time)
#[1] "2019-01-12 18:48:49 UTC" "2019-01-14 04:38:40 UTC" "2019-01-14 06:00:24 UTC"
#[4] "2019-01-15 06:39:53 UTC" "2019-01-15 13:31:48 UTC" "2019-01-15 15:05:13 UTC"

如果需要特定格式的数据,可以在date_Time上使用format

date_Time_format <- format(date_Time, '%m/%d/%Y %H:%M')
head(date_Time_format)
#[1] "01/12/2019 18:48" "01/14/2019 04:38" "01/14/2019 06:00" "01/15/2019 06:39"
#[5] "01/15/2019 13:31" "01/15/2019 15:05"

【讨论】:

  • 这真的很有帮助,非常感谢您澄清格式问题。
猜你喜欢
  • 2018-06-17
  • 2012-08-08
  • 2017-07-13
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
相关资源
最近更新 更多