非常有趣的问题!我尝试使用runif(),但没有得到它。最后,这就是我所做的:
dates <- sample(seq(from = as.Date("2000-01-01"), to = as.Date("2002-12-31"), length.out = 1000), 100, replace = TRUE)
我放了一些非常随意的配置。我所做的是:首先,我设置了从 2000 年 1 月 1 日到 2002 年 12 月 31 日的 1000 个步长。从中,我告诉程序随机选择 100 个,允许重复。这些是任意配置。
请注意,这甚至不是像runif() 那样真正的伪随机;它们将均匀地散布在线条上,但步数与选择的比率越大,看起来越随机。
编辑:我有可能误解了你的问题。起初我以为你想生成 2000-2002 年(以及后来的 2007-2009 年)范围内的虚拟日期数据,但现在我想你想确定它是否在该范围内......无论哪种方式,我都不太明白.如果是第二个,代码如下:
df <- data.frame(Dates = sample(seq(from = as.Date("1998-01-01"), to = as.Date("2004-12-31"), length.out = 2000), 200, replace = TRUE),
otherStuff = rnorm(200))
df$isInRange <- ifelse(df$Dates > as.Date("2000-01-01") & df$Dates < as.Date("2002-12-31"), 1, 0)
也就是说,如果你不想使用除了基本 R 之外的任何东西。