使用R在给定间隔内选择随机日期的好方法是什么?

Nei*_*est 4 r date

我找不到类似的问题所以我认为它可能对其他人有用和/或产生一些讨论.我想随机抽取一些日常数据,以便对我所做的一些处理进行快速而肮脏的验证.问题是,给定一个开始和结束日期的间隔,如何计算该区间内的随机日期向量?

Rei*_*son 6

一个简单的选择是生成所需的日期集,然后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)

如果间隔很长,可能不是最有效的,因为您需要生成所有日期,但代码非常干净且易于理解.

  • 容易"grep"的意思?先生,为你编码太多了.:) (4认同)

GSe*_*See 5

我用了 sample

dates <- Sys.Date() - 20:1
sample(dates)
Run Code Online (Sandbox Code Playgroud)


Jos*_*ich 5

我会用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)