簡體   English   中英

如何在R中兩個時間點之間創建隨機日期向量?

[英]How do I create a vector of random dates between two time points in R?

我看過這個答案 ,其中列出時間點之間的所有日期。 理想情況下,我想說明開始日期和結束日期,以及向量中所需的元素數量,並獲取包括重復項在內的隨機日期。

start_date <- as.Date('2015-01-01')  
end_date <- as.Date('2017-01-01')   




set.seed(1984)
as.Date(sample( as.numeric(start_date): as.numeric(end_date), 10, 
                    replace = T), 
            origin = '1970-01-01')

[1] "2016-04-27" "2015-11-16" "2015-10-01" "2015-08-31" "2016-06-23"
[6] "2016-09-23" "2015-01-24" "2015-11-24" "2016-08-30" "2015-06-07"

在我看來,像在生成隨機日期中一樣使用sampleseq函數似乎更直接:

set.seed(1984)
sample(seq(as.Date('2015-01-01'), as.Date('2017-01-01'), by = "day"), 10)

輸出

[1] "2016-04-27" "2015-11-16" "2015-09-30" "2015-08-30" "2016-06-20"
[6] "2016-09-19" "2015-01-24" "2015-11-21" "2016-08-23" "2015-06-05"

如果我們正在使用POSIXct類,並且希望隨機化小時,分鍾和秒,而不僅僅是日期:

set.seed(1984)
sample(seq(as.POSIXct('2015-01-01'), as.POSIXct('2017-01-01'), by = "sec"), 10)

輸出

 [1] "2016-04-26 15:04:13 CEST" "2015-11-16 10:17:23 CET" 
 [3] "2015-09-30 22:50:41 CEST" "2015-08-30 23:17:49 CEST"
 [5] "2016-06-23 04:49:01 CEST" "2016-09-22 14:37:58 CEST"
 [7] "2015-01-24 17:04:13 CET"  "2015-11-24 07:13:42 CET" 
 [9] "2016-08-29 16:13:13 CEST" "2015-06-06 21:29:18 CEST"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM