首页 > 解决方案 > 在 R 中:有条件地将日期更改为往年

问题描述

我有一份公司财政年度的日期清单。我想将 1 月 1 日至 5 月 31 日之间的所有日期转换为一个新变量,它表示它属于上一年。我也有介于 6 月 1 日至 12 月 31 日之间的日期,我希望这些年保持不变。我们想要的示例:

   date       year
2010-05-31    2009
2015-03-31    2014
2007-04-30    2006
2011-08-31    2011
2002-11-30    2002

非常感谢您的帮助!谢谢!

标签: rdate

解决方案


你可以这样做base R

> df <- data.frame(date = as.Date(c("2010-05-31", "2015-03-31", "2007-04-30", "2011-08-31", "2002-11-30")))
> df$year <- as.numeric(format(df$date, "%Y")) - (as.numeric(format(df$date, "%m")) < 6)
> df
        date year
1 2010-05-31 2009
2 2015-03-31 2014
3 2007-04-30 2006
4 2011-08-31 2011
5 2002-11-30 2002

如果月份在六月之前,则最后一年是年份减去 1。


推荐阅读