【发布时间】:2015-07-09 20:35:24
【问题描述】:
我需要减去两年,然后在下面的日期中加上一天。使用包 lubridate,我可以分别从常规年份或闰年中减去日期,但我需要同时执行这两项操作。
df <- data.frame(
ServiceDate = c('2010-02-28','2016-02-29'), stringsAsFactors = F)
df$ServiceDate <- as.Date(df$ServiceDate, "%Y-%m-%d")
library(lubridate)
df$TwoYearsEarlier <- ymd(df$ServiceDate) - years(2) + days(1)
这是我从上面的代码中得到的
df
ServiceDate TwoYearsEarlier
2010-02-28 2008-02-29
2016-02-29 <NA>
有没有办法同时计算两者的天数?
这是想要的结果:
df
ServiceDate TwoYearsEarlier
2010-02-28 2008-02-29
2016-02-29 2014-03-01
在 Excel 中我使用类似的东西
=DATE(YEAR(AW2)-2,MONTH(AW2),DAY(AW2)+1)
【问题讨论】:
-
这个函数是矢量化的 我想知道为什么它返回
NA,它是可能的,因为它是一个未来的数据? -
years函数正在寻找2014-02-29,但找不到。尝试解决方法ymd(df$ServiceDate) - days(731)