首页 > 解决方案 > 如何从 R 中的两个不同日期列中找出最新日期并创建新变量?

问题描述

我有这样的数据:

cu ID   date1         date2  

1       2019-11-04    2018-11-06
2       2019-10-27    2018-10-30
3       2019-09-25    2018-09-26
4        blank        2018-09-26
5       2018-09-26    2018-09-20
6       2017-09-10    2018-09-20

我需要创建一个名为最新日期的变量(比较 date1 和 date2)与最近的日期(如下所示)

cu ID   date1         date2         **Latest date**

1       2019-11-04    2018-11-06    2018-11-06
2       2019-10-27    2018-10-30    2018-10-30
3       2019-09-25    2018-09-26    2018-09-26
4        blank        2018-09-26    2018-09-26
5       2018-09-26    2018-09-20    2018-09-26
6       2017-09-10    2018-09-20    2018-09-20

标签: r

解决方案


首先,我们必须将日期转换为DateR 中的对象

df$date1 <- as.Date(df$date1)
df$date2 <- as.Date(df$date2)

方法 1

然后我们可以apply使用 rowise ( 1)max函数忽略 NA(空格)na.rm = T

df$latest_date <- apply(df[c("date1","date2")],1, max, na.rm=T)

方法 2

另一种方法是使用pmax函数来获得相同的结果

df$latest_date <- pmax(df$date1,df$date2, na.rm=T) 

输出:

> df
  cu_ID      date1      date2 latest_date
1     1 2019-11-04 2018-11-06  2019-11-04
2     2 2019-10-27 2018-10-30  2019-10-27
3     3 2019-09-25 2018-09-26  2019-09-25
4     4       <NA> 2018-09-26  2018-09-26
5     5 2018-09-26 2018-09-20  2018-09-26
6     6 2017-09-10 2018-09-20  2018-09-20

推荐阅读