R 语言 按某列融合两张表,并相加其余数据部分

R有个很好用的包:tidyverse,可以利用其中的管道操作符%>%来将两张表融合。

比如我们需要的输入A,输入B和输出C如下所示:

A:

 
  

No Num

1 A 3

2 B 7

3 C 4

4 D 9

5 E 0

6 F 5

B:

    No    Num

1    E    6

2    D    3

3    F    8

4    G    1

5    H    4

现在要将A和B表合并成C,其中,相同的No合并,而对应的Num相加,即合并完成的C表应类似下表结构:
C:

 
  

No Num

1 A 3

2 B 7

3 C 4

4 D 12

5 E 6

6 F 13

7 G 1

8 H 4

实现代码如下:

## 构造数据
A<- data.frame(No = c("A", "B", "C", "D", "E", "F"), Num = c(3, 7, 4, 9, 0, 5))
B<- data.frame(No = c("E", "D", "F", "G", "H"), Num = c(6, 3, 8, 1, 4))
## 合并数据,并相加数值
library(tidyverse)
C<- A %>%
full_join(as.tibble(B), by = "No") %>%
mutate( Num = case_when( is.na(Num.x) ~ Num.y, is.na(Num.y) ~ Num.x, TRUE ~ Num.x + Num.y ) )%>% 
select(No, Num)

你可能感兴趣的:(R语言,融合表)