如何基于R中的另一个数据帧更新数据帧中的新列

时间:2020-10-16 08:53:44

标签: r dplyr tidyr

我想用df1个匹配列中的新列更新df2

我的df1看起来像

PID Record date Drugs
123 22-04-1996  D1+D2
123 23-04-1996  D2+D3
123 28-05-2000  D3+D4+D5+D6
234 22-04-1996  D1+D3
234 23-04-1996  D2+D4
347 28-05-2000  D3+D4+D5+D7
456 22-04-1996  D1+D4

我的df2看起来像

PID Record date V1  V2
123 22-04-1996  5.5 6.5
234 05-07-1997  6.8 6.8
347 28-05-2000  8.5 8.6
456 23-04-1996  7.4 7.2

我希望我的df1具有更新的列,例如

预期df1

PID Record date V1  V2  Drugs
123 22-04-1996  5.5 6.5 D1+D2
234 05-07-1997  6.8 6.8 NA
347 28-05-2000  8.5 8.6 D3+D4+D5+D7
456 23-04-1996  7.4 7.2 NA

我不想使用合并并创建新的df,我想使用现有的df

更新

谢谢

1 个答案:

答案 0 :(得分:0)

这项工作:

> df1 %>% right_join(df2, by = c('PID', 'Record date')) %>% 
+   arrange(PID) %>% relocate(1,2,4,5,3)
# A tibble: 4 x 5
# Groups:   PID [4]
    PID `Record date`    V1    V2 Drugs      
  <dbl> <date>        <dbl> <dbl> <chr>      
1   123 1996-04-22      5.5   6.5 D1+D2      
2   234 1997-07-05      6.8   6.8 NA         
3   347 2000-05-28      8.5   8.6 D3+D4+D5+D7
4   456 1996-04-23      7.4   7.2 NA         
>