2017-01-01 38 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 
相关问题