我试图求解一个日期,以便我要查找的参数在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以外的其他东西,那很好,我只需要能够得到那个日期即可。
谢谢!
答案 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