首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lubridate Uexpected结果

Lubridate Uexpected结果
EN

Stack Overflow用户
提问于 2019-03-12 08:23:59
回答 1查看 32关注 0票数 0

我在使用lubridate包时遇到了意外的结果。下面是一个简短的示例,使用函数time_length计算物理经过的时间;首先直接计算,然后按时间间隔计算。似乎使用“秒”单位的方法是相同的,但使用“月”单位的方法是不同的。有人知道为什么会这样吗?

作为参考,我使用:

代码语言:javascript
复制
R version: 3.5.1
lubridate version: 1.7.4

可重现的例子:

代码语言:javascript
复制
library(lubridate)
## generate two dates to illustrate issue
startDate <- ymd("2015-02-27")
endDate <- ymd("2015-03-02")

## calculate physical passage of time, in seconds
time_length(endDate - startDate, "seconds") # result: 259200
time_length(interval(startDate, endDate), "seconds") # result: 259200
# The methods above match, but...

## calculate physical passage of time, in months
time_length(endDate - startDate, "months") # result: 0.09863014
time_length(interval(startDate, endDate), "months") # result: 0.1071429
# The results no longer match! Why?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-12 08:33:51

月份没有固定的长度。您正在尝试将259200秒(即3天)转换为月

代码语言:javascript
复制
> endDate - startDate
Time difference of 3 days

您的0.09863014为3/(365/12),试图将任意3天转换为任意月份

代码语言:javascript
复制
> interval(startDate, endDate)
[1] 2015-02-27 UTC--2015-03-02 UTC

您的0.1071429是3/28,因为您试图将从非闰年2月开始的3天转换为月份

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55112325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档