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

使用R在给定时间间隔内选择随机日期的好方法是什么?,r,date,R,Date,我找不到类似的问题,因此我认为它可能对其他人有用,并/或引发一些讨论。我想随机抽取一些日常数据,以便对我所做的一些处理进行快速而肮脏的验证。问题是,给定开始日期和结束日期的间隔,如何计算该间隔内的随机日期向量 as.Date("1979-01-01") + runif( 10, max=as.integer( as.Date( "2012-12-31") - as.Date( "1979-01-01"))) [1] "1997-03-07" "2

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

as.Date("1979-01-01") + 
  runif( 10, 
    max=as.integer( 
      as.Date( "2012-12-31") - 
        as.Date( "1979-01-01")))

[1] "1997-03-07" "2009-01-11" "1983-02-04" "1999-11-11" "2006-03-26"
[6] "2005-06-04" "2001-03-18" "1994-09-17" "1995-11-28" "1985-04-19"

当然,这可以很容易地包装成一个函数来参数化输出向量的开始日期、结束日期和长度。其优点在于它只使用基函数;一个缺点可能是它只能持续一整天。如果您需要更高的分辨率,则需要更复杂的解决方案。

我会使用
示例

dates <- Sys.Date() - 20:1
sample(dates)

dates一个简单的选择是生成所需的日期集,然后以通常的方式从中生成
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"

Start我会使用
sample.int

Start <- as.Date("2013-01-01")
End <- as.Date("2013-01-31")
Samp <- Start + sample.int(End-Start, 5)

开始日期没有什么特别之处,你仍然可以像使用任何其他向量一样使用
示例?先生,您的代码太多了。:)甚至比我的方式更干净!我忘了采样函数。在我看来,这是易读性和效率的最佳结合。谢谢大家。