如何对两个表进行特定绑定

How to make a specific binding of two tables

我有一个包含所有可能 ID 的单列数据框:

ID 
a1
a2
b1
b11
c1

我从我的数据库中获取具有相同列“ID”的数据框。但在该数据框中,并非所有 ID 都是。这是 table:

的例子
ID    value
a1     18
a2     10
b1     10

我想以这种方式绑定那两个 table,因此不在我的 table 中的 ID 的值为零。那么,如何绑定这两个 table 来得到这个:


ID    value
a1     18
a2     10
b1     10
b11    0
c1     0

连接两个表并将NA值替换为0。

使用dplyr

library(dplyr)
df1 %>%
  full_join(df2, by = 'ID') %>%
  mutate(value = replace(value, is.na(value), 0))

#   ID value
#1  a1    18
#2  a2    10
#3  b1    10
#4 b11     0
#5  c1     0

在基础 R 中,您可以这样做:

transform(merge(df1, df2, by = 'ID', all = TRUE), 
          value = replace(value, is.na(value), 0))

我们也可以

library(dplyr)
df1 %>%
     full_join(df2, by = 'ID') %>%
     mutate(value = case_when(is.na(value) ~ 0, TRUE ~ value))