我发现此有用的函数here用于计算年龄(或仅计算两个日期之间的时间):
calc_age <- function(birthDate, refDate = Sys.Date()) {
period <- as.period(new_interval(birthDate, refDate),
unit = "year")
period$year
}
我想通过使unit
作为函数的参数来改进它,以便我们可以以月,天或period
对象支持的单位为单位来获得年龄。
我尝试过这样的事情:
calc_age <- function(birthDate, refDate = Sys.Date(), unit = 'year') {
period <- as.period(new_interval(birthDate, refDate),
unit = unit)
period$unit
}
但是我收到此错误消息:
Error in slot(x, name) :
no slot of name "unit" for this object of class "Period"
我认为问题与评估有关,因此我尝试使用enquo
或quotext
进行了一些尝试,但是由于我对函数式编程非常陌生,因此无法使其正常工作。
感谢您的帮助,对英语不好表示抱歉。
答案 0 :(得分:0)
对问题链接中的代码的修改不是很大。
calc_age2 <- function(birthDate, refDate = Sys.Date(), unit = "year"){
int <- interval(birthDate, refDate)
period <- as.period(int, unit = unit)
slot(period, unit)
}
unix的正式年龄是多少?
calc_age2("1970-01-01")
#[1] 49
calc_age2("1970-01-01", unit = "month")
#[1] 593