在给定时间范围内生成日期和时间

问题描述

我想在2019年12月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),但不知道如何做到这一点。如果有人能对此有所启发,将不胜感激。

解决方法

一种方法是在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',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"

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

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"