我想计算日期之间的差异,例如" 2015年10月8日至2017年3月30日及#34;把它们打成几年就好了
2015 x天
2016 y天
2017 z days
是否有任何R库或如何编写函数来执行此操作。
请提前告知我们。
答案 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