日期格式化MMM-YYYY

时间:2017-02-22 10:52:39

标签: r date

我有一个数据集,其日期格式如下:

初​​始:

Jan-2015 Apr-2013 Jun-2014 Jan-2015 Jan-2016 Jan-2015 Jan-2016 Jan-2015 Apr-2012 Nov-2012 Jun-2013 Sep-2013

决赛:

Feb-2014 Jan-2013 Sep-2014 Apr-2013 Sep-2014 Mar-2013 Aug-2012 Apr-2012 Oct-2012 Oct-2013 Jun-2014 Oct-2013

我想执行以下步骤:

  1. 为月和年创建虚拟变量
  2. 从其他日期减去这些日期以查找以月为单位的持续时间(最终姓名缩写)
  3. 我想在R?

    中做这些

1 个答案:

答案 0 :(得分:3)

要扩展@neilfws答案,您可以使用month包中的yearlubridate函数来创建数据框中包含月份和年份的虚拟变量。

以下是代码:

library(lubridate)
library(zoo)
df <- data.frame(Initial = c("Jan-2015", "Apr-2013", "Jun-2014", "Jan-2015", "Jan-2016", "Jan-2015", 
                         "Jan-2016", "Jan-2015", "Apr-2012", "Nov-2012", "Jun-2013", "Sep-2013"),
             Final = c("Feb-2014", "Jan-2013", "Sep-2014", "Apr-2013", "Sep-2014", "Mar-2013", 
                       "Aug-2012", "Apr-2012", "Oct-2012", "Oct-2013", "Jun-2014", "Oct-2013"))

df$Initial <- as.character(df$Initial)
df$Final <- as.character(df$Final)
df$Initial <- as.yearmon(df$Initial, "%b-%Y")
df$Final <- as.yearmon(df$Final, "%b-%Y")
df$month_initial <- month(df$Initial)
df$year_intial <- year(df$Initial)
df$month_final <- month(df$Final)
df$year_final <- year(df$Final)

df$Difference <- 12*(df$Initial-df$Final)

这是最终的data.frame:

> head(df)
   Initial    Final month_initial year_intial month_final year_final Difference
1 Jan 2015 Feb 2014             1        2015           2       2014         11
2 Apr 2013 Jan 2013             4        2013           1       2013          3
3 Jun 2014 Sep 2014             6        2014           9       2014         -3
4 Jan 2015 Apr 2013             1        2015           4       2013         21
5 Jan 2016 Sep 2014             1        2016           9       2014         16
6 Jan 2015 Mar 2013             1        2015           3       2013         22

希望这有帮助!