有没有办法解决ifelse语句中的日期?

时间:2019-08-12 17:13:35

标签: r

我试图求解一个日期,以便我要查找的参数在ifelse语句中为true,以便真正的输入为日期。我很难说出我要做什么,但基本上我在雇用某人时以及他们出生时就遇到了。我需要找到他们已经工作了多长时间+他们多大了相加的日期。

我已经经历了几种编写ifelse代码的方法,但是错误在于要解决该占位符变量。

library(lubridate)

hire_date <- ymd("1982-02-02")

birth_date <- ymd("1967-02-02")

retire <- 1

test <- data.frame(hire_date, birth_date, retire)

test$pension4 <- ifelse(test$retire == 1, ifelse(((
as.duration(ymd(x) %--% test$hire_date / dyears(1))) + (as.duration(ymd(x)
%--% test$birth_date / dyears(1)))) == 79, x, NA), NA)

x是我要解决的问题。在本例中,如果我的人是在1982-02-02年被录用且出生于1967-02-02年,我要输入的养老金4是他们的年龄和服务年限相加的日期为79。 2014-02-02。他们从15岁开始工作(我只是把随机数加起来,所以这不是超级准确),所以在2014年,他们将是47岁,已经工作了32年,年龄和服务年限总计为79年。

如果我需要使用ifelse以外的其他东西,那很好,我只需要能够得到那个日期即可。

谢谢!

1 个答案:

答案 0 :(得分:2)

test <- data.frame(hire_date = as.Date("1982-02-02"), birth_date = as.Date("1967-02-02"))
transform(test, retire_date = hire_date + (79*365.25 - (hire_date - birth_date))/2)
#    hire_date birth_date retire_date
# 1 1982-02-02 1967-02-02  2014-02-02