2017-01-01 64 views
2

在lubridate提取一個月很簡單:month(some_date),這一點讓1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5...提取一個月數年lubridate

但是如果我需要確定在幾年月份數得到1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...?是否有lubridate(或者與R基地)達到這個辦法?謝謝

我想這

Day <- c('2015/01/01', '2015/03/01', '2015/07/25', '2016/03/05', '2016/11/28') 
Day <- date(Day) 
Month <- Day - min(Day) 
Month <- ((Month/ddays(1))/30.41)+1 
Month <- trunc(Month) 

,但它顯然給出了一個月的差近似(1 2 7 15 23 --March月1日,2015年被認爲屬於月份#2)。

回答

4

你可以做的是從日期的年份。減去的第一年,乘上12,並添加到month(Day)輸出。這將爲第二年等添加0第一年,12

使用:

month(Day) + (year(Day) - min(year(Day)))*12 

給出:

[1] 1 3 7 15 23 

在基礎R如下,你可以做到這一點(如也@DavidArenburg建議):

mnths <- as.POSIXlt(Day) 
mnths$mon + 1 + (mnths$year - min(mnths$year)) * 12