我有以下数据框架
DF1
ID PMT_DATE
100 2015/01/01
100 2015/02/01
100 2015/04/01
200 2016/01/01
200 2016/02/01
和df2
ID DATE STATUS
100 2014/12/31 A
100 2015/03/15 B
200 2015/12/31 A
200 2016/06/01 C
我将使用df2中的STATUS列创建一个df1的数据框 . 如果df1中的PMT_DATE列大于或等于df2中的DATE列,则df2中的关联状态应放在新数据帧中 . 生成的数据框应如下所示
ID PMT_DATE STATUS
100 2015/01/01 A
100 2015/02/01 A
100 2015/04/01 B
200 2016/01/01 A
200 2016/02/01 A
通常我会加入这两个表,创建一个新列并使用mutate执行计算并删除我不再需要的列,但由于df1和df2中的ID列中有多个匹配,我不能完全实施该战略 .
编辑:对于多个匹配,我想要最新的状态 . 例如,ID == 100的最后一行将属于Status == A和Status == B,但我只想要状态B.此外,两个数据帧中的ID字段表示相同的事物(即ID的连接)是我想要的) .
我正在考虑的事情
new_df <- df1 %>% rowwise() $>% do() ...
但我不知道如何填补其余部分来实现我的需要 .
2 回答
这是一种使用
dplyr
的方法 . 我们的想法是先加入表格,然后用PMT_DATE >= DATE
过滤掉该行 . 我想你只想要最新的STATUS
(STATUS
与最新的DATE
相关联) .我不确定是否可以使用
dplyr
进行滚动连接 . 这就是我要用data.table
来获取最新的STATUS
:数据