合并具有非唯一标识符的两个数据帧

时间:2018-11-30 03:24:46

标签: r merge

尝试合并R中的两个数据帧: 一个看起来像:

Id
1
2
3
4

另一个看起来像:

Id Name
 1  A
 1  B
 2  B
 3  C
 3  A

预期结果:

ID A B C 
1  1 1 0 
2  0 1 0
3  1 0 1

我不知道如何以这种方式合并数据框。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这里是dplyrtidyr的一种方式-

library(dplyr)
library(tidyr)

df1 <- data.frame(Id = 1:4)
df2 <- data.frame(Id = c(1,1,2,3,3), Name = c("A", "B", "B", "C", "A"), 
                  stringsAsFactors = F)

df2 %>% 
  mutate(value = 1) %>% 
  spread(Name, value, fill = 0) %>% 
  inner_join(df1, by = "Id")

  Id A B C
1  1 1 1 0
2  2 0 1 0
3  3 1 0 1