R Studio рандомизировать дату и время - PullRequest
0 голосов
/ 24 мая 2018

Я хочу анонимизировать набор данных, заменив исходные столбцы дат и времени новыми рандомизированными датами (с 01.01.2012 по 31.12.2015) и новыми рандомизированными временами.

  • Формат столбца даты: d% .m% .Y%

  • Формат столбца времени: ч: м

Фрейм данных состоит из 37,094 строк.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вот способ, который преобразует даты в формат 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')
0 голосов
/ 24 мая 2018

Для этого мы можем использовать 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"
...