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