如何对两个表进行特定绑定
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))
我有一个包含所有可能 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))