我找不到类似的问题所以我认为它可能对其他人有用和/或产生一些讨论.我想随机抽取一些日常数据,以便对我所做的一些处理进行快速而肮脏的验证.问题是,给定一个开始和结束日期的间隔,如何计算该区间内的随机日期向量?
一个简单的选择是生成所需的日期集,然后sample()
以通常的方式从中生成日期:
Start <- as.Date("2013-01-01")
End <- as.Date("2013-01-31")
dates <- seq(from = Start, to = End, by = 1)
set.seed(1)
draw1 <- sample(dates, 5)
draw2 <- sample(dates, 5)
> draw1
[1] "2013-01-09" "2013-01-12" "2013-01-17" "2013-01-26"
[5] "2013-01-06"
> draw2
[1] "2013-01-28" "2013-01-29" "2013-01-20" "2013-01-18"
[5] "2013-01-02"
Run Code Online (Sandbox Code Playgroud)
如果间隔很长,可能不是最有效的,因为您需要生成所有日期,但代码非常干净且易于理解.
我会用sample.int
:
Start <- as.Date("2013-01-01")
End <- as.Date("2013-01-31")
Samp <- Start + sample.int(End-Start, 5)
Run Code Online (Sandbox Code Playgroud)