我可以使用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
之后包含years
和weeks
的结果
答案 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