R Studio随机化日期和时间

时间:2018-05-24 09:49:17

标签: r database date random time

我想通过用新的随机日期(2012年1月1日至2015年12月31日)和新的随机时间替换原始日期和时间列来匿名数据集。

  • 日期列的格式: d%.m%.Y%

  • 时间列的格式: h:m

数据框由37.094行组成。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我们可以使用seq.POSIXt进行抽样。

# for reproducbility we set a seed.
set.seed(4242)

采样大小设置为指定大小37094。 by中的seq.POSIXt现在是60秒15分钟。将分钟调整为您喜欢的间隔时间。

samplesdates <- sample(seq.POSIXt(as.POSIXct("2012-01-01 00:00"), as.POSIXct("2015-12-31 23:59"), by = 60*15), size = 37094, replace = TRUE)

newdates <- as.character(samplesdates, "%d.%m.%Y")
head(newdates)
[1] "11.12.2015" "23.05.2013" "01.12.2012" "04.09.2014" "23.10.2014" "27.09.2015"

newtimes <- as.character(samplesdates, "%H:%M")
head(newtimes)
[1] "17:00" "01:15" "21:15" "00:30" "19:30" "08:30"

答案 1 :(得分:0)

这是一种将日期转换为unixtime格式的方法,从范围中随机抽样,然后转换回日期。需要一些格式化才能获得所需的输出。

library(lubridate)
start = as.integer(dmy_hms('01-01-2012 00:00:00'))
end = as.integer(dmy_hms('31-12-2015 00:00:00'))
randomdates = as.POSIXct(runif(37094, start, end), origin = '1970-01-01')
randomdatepart = format(randomdates, '%d.%m.%y')
randomtimepart = format(randomdates, '%H:%M')