扩展difftime()以包括数月和数年

时间:2014-08-25 23:29:03

标签: r

我可以使用x获得difftime以来的时间,但最多只需要一周的时间间隔。

> difftime(Sys.Date(), "1977-04-05")
# Time difference of 13655.67 days
> difftime(Sys.Date(), "1977-04-05", units = "weeks")
# Time difference of 1950.81 weeks

除了手动计算之外,是否有一个功能可以获得x以来的月份和年份?

我已经查看了这个问题convert difftime time to years, months and days,但两年前它被问到并回答过,我认为现在可能会有一些新的东西。

我想获取此信息的原因是将其添加到此无用功能

> timeSinceBirth <- function(dob) 
  {
      today <- Sys.Date()
      s <- sapply(list(NULL, "weeks"), function(x) {
          difftime(today, dob, units = x)
      })
      setNames(s, c("days", "weeks"))
  }
> timeSinceBirth("1977-04-05")
#     days    weeks 
# 13655.67  1950.81 

我希望在months之后包含yearsweeks的结果

1 个答案:

答案 0 :(得分:8)

您可以使用序列。如下所示:

timeSinceBirth <- function(dob) 
{
  today <- Sys.Date()
  s <- sapply(list("days", "weeks", "months", "years"), function(x) {
    (length(seq(as.Date(dob), Sys.Date(), x)) - 1)
  })
  setNames(s, c("days", "weeks", "months", "years"))
}

> timeSinceBirth("1977-04-05")
days  weeks months  years 
13657   1951    448     37