r - 仅计算月份和日期的时差
问题描述
我想仅考虑天数和月份来计算时差。例如:
> as.Date("2018-12-15")-as.Date("2018-12-16")
Time difference of -1 days
> as.Date("2008-12-15")-as.Date("2018-12-16")
Time difference of -3653 days
我希望他们两个都返回-1。
编辑:不应考虑闰年,因为我们只需要一个近似值,而返回值不需要精确。
解决方案
正如@Omry Atia 所建议的,我们可以将年份组件设置为同一年,然后计算差异。
library(lubridate)
get_difference_without_years <- function(x, y) {
x <- ymd(x)
year(x) <- 2018
y <- ymd(y)
year(y) <- 2018
x - y
}
get_difference_without_years("2018-12-15", "2018-12-16")
#Time difference of -1 days
get_difference_without_years("2008-12-15", "2018-12-16")
#Time difference of -1 days
将其保留在基础 R 中
get_difference_without_years <- function(x, y) {
x <- as.Date(paste0("2018-", format(as.Date(x), "%m-%d")))
y <- as.Date(paste0("2018-", format(as.Date(y), "%m-%d")))
x - y
}
get_difference_without_years("2008-12-15", "2018-12-16")
#Time difference of -1 days
get_difference_without_years("2018-12-15", "2018-12-16")
#Time difference of -1 days
推荐阅读
- java - 用 Java 获取 PostgreSQL 数据库的大小
- php - 使用 PHP 压缩文件的问题
- ansible - 如何在Jinja2 ansible中获得两个定义变量的总和
- excel - 如何仅在给定值的Excel中求和
- reactjs - 如何在将活动链接设置为另一个链接时折叠 metismenu react js 中的菜单?
- centos7 - 如何解决 cron 计划问题?
- java - 在 RabbitMQ 中的给定日期后退订特定队列
- java - 使用正则表达式从给定的字符串值中提取子字符串
- reactjs - 错误:java.io.IOException:UT000036:连接终止解析多部分数据
- java - Maven 创建单个可执行 jar 文件