将日期转换为数字,但限制为一年中的天数

问题描述 投票:1回答:1

我想在2008年1月1日至2010年12月31日之间创建大约1万个日期对象。我为此编写了代码,但实际上我想在2008年保留1-366天,因为2008-02-29(le年),我希望它们在366之后重新启动,然后在2009-01-01变为1。我可以这样做,因为只能为2008年,2009年和2010年创建,但这并不方便。我正在阅读有关lubridate的信息,但无法弄清楚。我还可以过滤1到366,然后过滤367-731,但这也不会有效。有人知道更好的方法吗?

    set.seed(123)
    tim1=sample(365*3+1,10000,replace = TRUE)   ### that plus 1 from feb 29 in 2008
    dat1=as.Date(tim1,origin="2007-12-31")   # then 1 will be 2008-01-01
r date numeric lubridate as.date
1个回答
0
投票

您可以创建所有目标日期的向量,并从中进行采样。要创建矢量,存在seq.Date,这是seq类的对象的"Date"方法。

start <- as.Date("2008-01-01")
end <- as.Date("2010-12-31")

set.seed(123)
dat1 <- sample(seq(start, end, by = "days"), 10000, TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.