如何在特定日期范围内生成一组12个随机日期?
我认为以下内容可行:
sample(as.Date(1999/01/01), as.Date(2000/01/01),12)
但结果看起来像一组随机的数字?
谢谢
答案 0 :(得分:44)
seq
有一个类Date
的方法,适用于此:
sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 12)
答案 1 :(得分:10)
有几种方法:
从单个Date
对象开始,只需添加sample()
的结果
从一系列Date
个对象和sample()
对象开始。
这是1:
R> set.seed(42)
R> res <- Sys.Date() + sort(sample(1:10, 3))
R> res
[1] "2014-02-04" "2014-02-10" "2014-02-11"
R>
答案 2 :(得分:3)
要关注基本R函数,例如rnorm
,rnbinom
,runif
等,我在下面创建了函数rdate
,根据{{3}返回随机日期}。
默认范围是当年的第一天和最后一天。
rdate <- function(x,
min = paste0(format(Sys.Date(), '%Y'), '-01-01'),
max = paste0(format(Sys.Date(), '%Y'), '-12-31'),
sort = TRUE) {
dates <- sample(seq(as.Date(min), as.Date(max), by = "day"), x, replace = TRUE)
if (sort == TRUE) {
sort(dates)
} else {
dates
}
}
正如所料,它返回有效日期:
> class(rdate(12))
[1] "Date"
随机性检查,从今年产生了一百万个日期:
> hist(rdate(1000000), breaks = 'months')
答案 3 :(得分:2)
td = as.Date('2000/01/01') - as.Date('1999/01/01')
as.Date('1999/01/01') + sample(0:td, 12)