如何在特定日期范围内生成一组12个随机日期?我认为以下方法可行:
sample(as.Date(1999/01/01), as.Date(2000/01/01),12)
但结果看起来像是一组随机数字?谢谢你
kq4fsx7k1#
seq有一个用于类Date的方法,该方法适用于:
seq
Date
sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 12)
jbose2ul2#
几种方式:1.从一个Date对象开始,然后添加来自sample()的结果1.从一系列Date对象开始,然后sample()它。这里是1:
sample()
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>
ifmq2ha23#
为了遵循像rnorm,rnbinom,runif等基R函数,我创建了下面的函数rdate来返回基于accepted answer of Matthew Lundberg的随机日期。默认范围是当前年份的第一天和最后一天。
rnorm
rnbinom
runif
rdate
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')
eh57zj3b4#
td = as.Date('2000/01/01') - as.Date('1999/01/01') as.Date('1999/01/01') + sample(0:td, 12)
vsnjm48y5#
generateRandomDate <- function(start_date, end_date) { random_days <- sample(0:(as.numeric(end_date - start_date)), 1) start_date + days(random_days) } > set.seed(0); sapply(1:12, function(x) generateRandomDate(ymd("2023-01-01"), ymd("2023-1-31")) ) %>% as.Date(origin = "1970-01-01") [1] "2023-01-14" "2023-01-25" "2023-01-04" "2023-01-07" "2023-01-01" "2023-01-02" "2023-01-29" "2023-01-23" "2023-01-11" "2023-01-14" "2023-01-18" "2023-01-27"
注意as.Date()和origin参数的使用。不知道为什么代码没有它们就不能运行……
origin
5条答案
按热度按时间kq4fsx7k1#
seq
有一个用于类Date
的方法,该方法适用于:jbose2ul2#
几种方式:
1.从一个
Date
对象开始,然后添加来自sample()
的结果1.从一系列
Date
对象开始,然后sample()
它。这里是1:
ifmq2ha23#
为了遵循像
rnorm
,rnbinom
,runif
等基R函数,我创建了下面的函数rdate
来返回基于accepted answer of Matthew Lundberg的随机日期。默认范围是当前年份的第一天和最后一天。
正如预期的那样,它返回有效日期:
随机检查,从今年开始产生一百万个日期:
eh57zj3b4#
vsnjm48y5#
注意as.Date()和
origin
参数的使用。不知道为什么代码没有它们就不能运行……