问题描述
我想在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
我已经参考了timeDate
和timeDate
软件包(和this earlier thread),但不知道如何做到这一点。如果有人能对此有所启发,将不胜感激。
解决方法
一种方法是在start_date
和end_date
与sample
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"