R按不同起点分类的日期

时间:2017-11-11 13:59:26

标签: r function date calculated-columns

我有一个包含许多ID的数据框,每个ID都有两个不同的列:一个定义一个重要的截止日期,另一个定义许多不同的日期。我需要在截止日期前一个月添加一个列为“-1”的列,在截止日期前两个月为“-2”,截止日期前三个月为“-3”,并且截止日期后一个月为“1”,截止日期后两个月为“2”,依此类推,截至截止日期后6个月。 我的问题是,每个ID的所有截止日期都不同,我只知道如何使用ifelse()函数命名特定的日期范围。

这里有一小部分数据框可以更好地理解结构:

DF:

i.d.    registered_at         Day    
x        2013-12-20        2013-11-19       
x        2013-12-20        2014-02-20        
x        2013-12-20        2014-05-11        
y        2013-10-01        2013-08-05       
y        2013-10-01        2013-10-01       
z        2014-01-15        2013-10-25      

所以对于i.d. x例如:月“-1”定义为2013-11-20< =“ - 1”< 2013-12-20;月“-2”定义为2013-10-20< =“ - 2”< 2013-11-20;月“-3”定义为2013-09-20< =“-3”< 2013-10-20;月“1”被定义为2013-12-20< =“1”< 2014-01-20等等,直到几个月“6”

我的问题是我不能通过给出具体日期来定义这些标签。例如,“x”将在不同日期的不同月份中定义“-1”个月,因为该日期的登记与i.d完全不同。 “Y”。

我已尝试ifelse()功能,但无法弄清楚这一点。

我的最终数据框应如下所示:

Newdf:

i.d.    registered_at         Day         MonthsNo
x        2013-12-20        2013-11-19       -2
x        2013-12-20        2014-02-20        3
x        2013-12-20        2014-05-11        5
y        2013-10-01        2013-08-05       -2
y        2013-10-01        2013-10-01        1
z        2014-01-15        2013-10-25       -3

需要考虑的另一个问题是,如果一个i.d.在2013-03-31注册,没有2013-02-31 ..只有2013-02-28,如何确保代码包含这样的情况?

我希望有人可以帮我解决这个问题:)

0 个答案:

没有答案