effizient generieren einer zufälligen Stichprobe von Zeit und Datum zwischen zwei Daten

Ich geschrieben habe, ein (ziemlich naiv) - Funktion, um nach dem Zufallsprinzip wählen Sie ein Datum/Zeit zwischen zwei festgelegten Tagen

# set start and end dates to sample between
day.start <- "2012/01/01"
day.end <- "2012/12/31"

# define a random date/time selection function
rand.day.time <- function(day.start,day.end,size) {
  dayseq <- seq.Date(as.Date(day.start),as.Date(day.end),by="day")
  dayselect <- sample(dayseq,size,replace=TRUE)
  hourselect <- sample(1:24,size,replace=TRUE)
  minselect <- sample(0:59,size,replace=TRUE)
  as.POSIXlt(paste(dayselect, hourselect,":",minselect,sep="") )
}

Sind die Ergebnisse in:

> rand.day.time(day.start,day.end,size=3)
[1] "2012-02-07 21:42:00" "2012-09-02 07:27:00" "2012-06-15 01:13:00"

Aber das scheint zu verlangsamen erheblich die Größe der Stichprobe steigt.

# some benchmarking
> system.time(rand.day.time(day.start,day.end,size=100000))
   user  system elapsed 
   4.68    0.03    4.70 
> system.time(rand.day.time(day.start,day.end,size=200000))
   user  system elapsed 
   9.42    0.06    9.49 

Ist jemand in der Lage zu zeigen, wie etwas zu tun, wie dies in einer effizienteren Weise?

InformationsquelleAutor thelatemail | 2013-02-06
Schreibe einen Kommentar