r - 如何从 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
解决方案
首先,我们必须将日期转换为Date
R 中的对象
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
推荐阅读
- azure-resource-manager - ARM 参数数组中的密钥库引用
- assembly - PUSH 的 Intel REX 编码
- spring-security - 记住没有 HTTP 会话的目标 URL
- tsql - where 子句中的 case 表达式以包含多个值
- django - Drf unique_together 防止视图集中的破坏
- .net - 将多个 XML 元素加密为单个数据块?
- python - 当一个序列在 df 的集群中时删除原始数据
- aframe - 如何更改每个实体内的 A 帧相机旋转?
- python - 来自 DataFrame 的 Google OR Tools 约束
- javascript - JavaScript OOP 的问题