R言語はある列によって2枚の表を融合し、残りのデータ部分を加算する

2562 ワード

Rには、パイプオペレータ%>%を使用して2つのテーブルを融合させることができる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%
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)