2017-02-22 74 views
0

我有以下格式的日期數據集:日期格式MMM-YYYY

初始:

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. 減去這些日期從另一個日期以找出個月

持續時間(final-縮寫)我想R中做這些?

回答

1

您可以使用zoo包中的as.yearmon

library(zoo) 
12 * (as.yearmon("Jan-2015", "%b-%Y") - as.yearmon("Feb-2014", "%b-%Y")) 

# result 
# [1] 11 
2

要擴大@neilfws的回答,您可以使用monthyear功能從lubridate封裝在數據幀創建具有月份和年份的虛擬變量。

下面是代碼:

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 

希望這有助於!