首页 > 解决方案 > 根据开始年份和结束年份添加列以显示时间段

问题描述

我有一个看起来像这样的 data.table

CUSTOMER_ID START_DATE  END_DATE        COUNTRY
1           2006-11-10  2010-10-25      USA
2           2006-11-10  2018-09-29      FRANCE
3           2017-08-23  2018-09-29      CHINA
4           2007-01-30  2018-09-29      JAPAN
5           2007-01-30  2018-09-29      COLOMBIA
6           2007-01-30  2017-01-30      BRAZIL
7           2007-01-30  2017-01-30      USA
8           2012-03-15  2018-09-29      USA
9           2012-03-15  2018-09-29      CHINA
10          2006-11-10  2015-11-06      CHINA

有了这些数据,我想做以下事情:

  1. 计算两个日期之间的年差

  2. 根据计算的年数,我想创建一个新列“PERIOD”,使用 START_DATE 和 END_DATE 列中的开始和结束年份来显示每个客户活跃的每个时期。最终结果应该是这样的:

      ID    PERIOD  COUNTRY
      1   2006-2007 USA
      1   2007-2008 USA
      1   2008-2009 USA
      1   2009-2010 USA
      2   2006-2007 FRANCE
      2   2007-2008 FRANCE
      2   2008-2009 FRANCE
      2   2009-2010 FRANCE
      2   2010-2011 FRANCE
      2   2011-2012 FRANCE
      2   2012-2013 FRANCE
      2   2013-2014 FRANCE
      2   2014-2015 FRANCE
      2   2015-2016 FRANCE
      2   2016-2017 FRANCE
      2   2017-2018 FRANCE
      3   2017-2018 CHINA
      3   2018-     CHINA
    

到目前为止,我已经能够达到上面的第 1 位(计算 START_DATE 和 END_DATE 之间的年差):

date_cols <- c("START_DATE", "END_DATE")

DT[, (date_cols) := lapply(.SD, anytime::anydate), .SDcols = date_cols]

DT[,YEARS_ACTIVE:= ceiling(as.numeric(END_DATE-START_DATE)/365)]

任何帮助深表感谢

标签: rdata.tablecalculated-columns

解决方案


推荐阅读