我有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
答案 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
元素