我可以使用 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

最佳答案

您可以使用序列。所以像:

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

关于r - 扩展 difftime() 以包括月份和年份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25495833/

10-10 12:49