计算人年减去开始日期从结束日期
问题描述:
假设我有一个数据帧,看起来像这样:计算人年减去开始日期从结束日期
id start_date death_date
1 2011-05-20 2014-12-11
2 2014-08-01 2016-01-05
3 2005-01-02 2015-10-20
4 2015-06-30 2016-02-14
5 2014-07-01 2014-09-03
我想创建一个包含在几个月death_date和起始日期间的差异的新列,除非起始日期为2014-05-31之前。如果启动日期为2014年5月31日,那么我希望新的列是死亡日期和2014年5月31日之间的差异。
代码创建示例数据帧:
id <- c(1:5)
start_date <- c(as.Date("2011-05-20"), as.Date("2014-08-01"),
as.Date("2005-01-02"), as.Date("2015-06-30"),
as.Date("2014-07-01"))
death_date <- c(as.Date("2014-12-11"), as.Date("2016-01-05"),
as.Date("2015-10-20"), as.Date("2016-02-14"),
as.Date("2014-09-03"))
example_dates <- data.frame(id, start_date, death_date)
答
试试这个:
df$new_col <- round(ifelse(df$start_date<as.Date("2014-05-31"),
df$death_date-as.Date("2014-05-31"), df$death_date-df$start_date)/30, 2)
# id start_date death_date new_col
# 1 1 2011-05-20 2014-12-11 6.47
# 2 2 2014-08-01 2016-01-05 17.40
# 3 3 2005-01-02 2015-10-20 16.90
# 4 4 2015-06-30 2016-02-14 7.63
# 5 5 2014-07-01 2014-09-03 2.13
'$例如差异 Jaap
@ProcrastinatusMaximus,但规定如果start_date在2014-05-31之前,则执行example_dates $ death_date - “2014-05-31”。这是我的问题 –
在上面的注释中用'ifelse'替代'example $ start_date'(例子$ start_date
Jaap