如何基于R中的多个条件创建新列?

时间:2020-04-19 04:51:24

标签: r data-manipulation

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               -

我该怎么做?

2 个答案:

答案 0 :(得分:1)

假设DATE列的格式为year-month,我们可以添加一个任意日期以转换Date类中的DATEarrange的数据由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][]
相关问题