R中的"difftime"函数表现出奇怪的行为

3

我对函数“difftime”有些困惑。当我计算时间差到2016年3月27日时一切正常。但是,一旦我尝试计算2016年3月28日、29日、30日或31日的时间差,就似乎出现了问题:

> difftime("2016-03-27","1979-01-01", units="days")
Time difference of 13600 days
> difftime("2016-03-28","1979-01-01", units="days")
Time difference of 13600.96 days
> difftime("2016-03-31","1979-01-01", units="days")
Time difference of 13603.96 days

我可以通过将日期设置为2016年3月27日,然后手动添加“缺失”的天数来解决这个问题,但我在想这个函数可能有什么问题吗?我真的看不出我做错了什么,因为我只是改变了日期中的日数...

2个回答

4

2016年3月27日2016年3月28日多出来的一天0.96是由于夏令时开始的原因:

0.96 = 23 hours / 24 hours

阅读这篇R Nabble博客,详细讨论了这个问题。


2

当你使用as.Date转换时,没有问题:

difftime(as.Date("2016-03-28"), as.Date("1979-01-01"), units="days")

# Time difference of 13601 days

另外,lubridate 也没有问题:
library(lubridate)   
difftime(ymd("2016-03-28"), ymd("1979-01-01"), units="days")

# Time difference of 13601 days

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接