CUSTOMER LOAN DATE LOAN_DEFAULT CUSTOMER_DEFAULT
1 101 201601 Y Y
1 102 201603 N Y
1 101 201501 Y Y
2 201 201601 N N
2 202 201603 N N
我有一个如上所述的数据集,有多个客户,每个客户可能有几笔贷款。至少具有1个LOAN_DEFAULT的客户将被标记为CUSTOMER_DEFAULT。
我想基于CATEOMER级别的DATE和LOAN_DEFAULT创建一个新列“ DEFAULT_DATE”,该日期是最早的默认日期,如下所示:
CUSTOMER LOAN DATE LOAN_DEFAULT CUSTOMER_DEFAULT DEFAULT_DATE
1 101 201601 Y Y 201501
1 102 201603 N Y 201501
1 103 201501 Y Y 201501
2 201 201601 N N -
2 202 201603 N N -
我该怎么做?
答案 0 :(得分:1)
假设DATE
列的格式为year-month,我们可以添加一个任意日期以转换Date类中的DATE
,arrange
的数据由CUSTOMER
和{ {1}},并为每个DATE
获取第一个LOAN_DEFAULT
的数据。
CUSTOMER
答案 1 :(得分:0)
这里是data.table
library(data.table)
setDT(df)[, Date := as.IDate(paste0(DATE, '01'), '%Y%m%d'))
][order(CUSTOMER, DATE), DEFAULT_DATE :=
DATE[match('Y', LOAN_DEFAULT)] , CUSTOMER][]