如何合并数据框?

时间:2018-07-20 15:03:00

标签: r

我有3个数据框,如下所示:

数据帧1

ColA    ColB    ColC
1       B1      1-C1
2       B2      1-C2
3       B3      1-C3
4       B4  
5       B5  
6       B6  
7       B7  
8       B8  
9       B9      1-C9
10      B10 
11      B11 
12      B12     1-C12
13      B13 
14      B14     1-C14

数据框2

ColA    ColB    ColC
1       B1  
2       B2  
3       B3      2-C3
4       B4      2-C4
5       B5  
6       B6      2-C6
7       B7  
8       B8      2-C8
9       B9      2-C9
10      B10 
11      B11 
12      B12     2-C12
13      B13 
14      B14     2-C14
15      B15     2-C15

数据框3

ColA    ColB    3-Col3-C
1       B1  
2       B2  
3       B3       3-C3
4       B4  
5       B5  
6       B6       3-C6
7       B7  
8       B8  
9       B9       3-C9
10      B10 
11      B11      3-C11
12      B12      3-C12
13      B13      3-C13
14      B14 
15      B15      3-C15
16      B16      3-C16
17      B17      3-C17

我想合并这些数据框。第一数据帧中的数据具有第一优先级。第二数据帧数据具有第二优先级,第三数据集的数据具有最后优先级。我该怎么办?我想要的输出如下所示。

所需的数据帧:

ColA    ColB    ColC
1       B1      1-C1
2       B2      1-C2
3       B3      1-C3
4       B4      2-C4
5       B5  
6       B6      2-C6
7       B7  
8       B8      2-C8
9       B9      1-C9
10      B10 
11      B11     3-C11
12      B12     1-C12
13      B13     3-C13
14      B14     1-C14
15      B15     3-C15
16      B16     3-C16
17      B17     3-C17

1 个答案:

答案 0 :(得分:2)

我们可以将数据集保存在list中,然后通过'ColA','ColB'和full_join在'ColC'列中进行coalesce,以返回输出

library(tidyverse)
list(df1, df2, df3) %>% 
    reduce(full_join, by = c('ColA', 'ColB')) %>% 
    transmute(ColA, ColB, ColC = coalesce(ColC.x, ColC.y, ColC))

注意:根据OP的注释,数据中的空白为NA元素