如何计算日期/月份之间的差异并在相应年份中将它们分组?

时间:2016-03-16 18:09:19

标签: python r excel

我想计算日期之间的差异,例如" 2015年10月8日至2017年3月30日及#34;把它们打成几年就好了

2015 x天

2016 y天

2017 z days

是否有任何R库或如何编写函数来执行此操作。

请提前告知我们。

3 个答案:

答案 0 :(得分:1)

lubridate包有很多方法可以读取不同的日期格式并进行适当的计算。你给你的例子可以使用

dmy('08-Oct-2015')-dmy('30-Mar-2017')

你可以从那里按年分组。

答案 1 :(得分:1)

这为您提供了总体上不同的天数,同时定义了日期端点的向量:

diff( y <- as.Date(c("08-Oct-2015","30-Mar-2017"), format="%d-%b-%Y") )
Time difference of 539 days

这使您可以使用seq和table生成计数表:

table( format( seq( y[1], y[2], by=1), "%Y") )

2015 2016 2017 
  85  366   89 

如果您指定从表返回的值,则可以按位置或按名称对其进行索引:

 daytbl <- table( format( seq( y[1], y[2], by=1), "%Y") )
 daytbl["2015"]   # should return 85 with "2015" as a "name"

答案 2 :(得分:0)

我不知道一个Python模块可以在一行中做到这一点,但应该有几行:

来自datetime import datetime

def bucket_year_days(start_date, end_date):
    ''' Assumes start_date and end_date are already parsed to datetime '''
    years_dict = {}
    tmp_date = start_date
    while tmp_date <= end_date:
        next_date = datetime(tmp_date.year+1, 1, 1)
        years_dict[tmp_date.year] = (next_date - tmp_date).days
        tmp_date = next_date

    return years_dict