添加列以显示时间段,基于开始年和结束年

时间:2018-09-29 14:48:37

标签: r data.table calculated-columns

我有一个看起来像这样的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)]

非常感谢您的帮助

0 个答案:

没有答案
相关问题