如何计算闰年?

2024-04-16

我对闰年有一些疑问,如何通过使用这样的公式来确定

add.years= function(x,y){    
if(!isTRUE(all.equal(y,round(y)))) stop("Argument \"y\" must be an integer.\n")
x <- as.POSIXlt(x)
x$year <- x$year+y
as.Date(x)
}

当向我的观测数据集中添加例如 100 年时,它会考虑闰年吗?我怎样才能控制这个?

我有一个包含 50 年观察的时间序列数据集:

   date    obs
1995-01-01 1.0
1995-01-02 2.0
1995-01-03 2.5
...
2045-12-30 0.2
2045-12-31 0.1

数据集+100年

   date    obs
2095-01-01 1.0
2095-01-02 2.0
2095-01-03 2.5
...
2145-12-30 0.2
2145-12-31 0.1

经过基本检查后,我注意到原始数据集和 100 年后数据集的行数是相同的。我不确定闰年 2 月 29 日之前的 obs 值现在是否会是非闰年 3 月 1 日的 obs 值,等等。

我可以使用以下命令检查闰年时间库功能闰年,但是我想知道是否有更简单的方法来执行此操作,以确保删除 100 年后不存在的 2 月 29 日过日子的行,并添加 NA 值的新日期 2 月 29 日。


您可以检查一年是否是闰年leap_year from lubridate.

years <- 1895:2005
years[leap_year(years)]

该软件包还将处理不生成不可能的 2 月 29 日的情况。

ymd("2000-2-29") + years(1)    # NA
ymd("2000-2-29") %m+% years(1) # "2001-02-28"

The %m+%正如 @VitoshKa 提到的,“添加月份”运算符如果实际日期不存在,则将日期回滚到上个月的月底。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算闰年? 的相关文章

随机推荐