我有两个DF
> df1
id type
1 a
2 b
3 f
4 t
5 y
> df2
id type
1 D
2 V
3 f
4 t
5 y
6 z
7 p
8 x
我想获得以下输出
id type
1 a
2 b
3 f
4 t
5 y
1 D
2 V
3 f
4 t
5 y
基本上,我想加入(rbind)DF并删除两个DF中不存在的ID。
答案 0 :(得分:1)
此处的一个策略是在两个数据框之间获取ID的内积,然后将剩余的rbind()
和b
列a
放在一起:
df <- merge(df1, df2, by="id")
rbind(df[,c("id", "b")], setNames(df, c("id", "z", "b"))[, c("id", "b")])
<强>输出:强>
id b
1 1 a
2 2 b
3 3 f
4 4 t
5 5 y
6 1 D
7 2 V
8 3 f
9 4 t
10 5 y
使用的数据:
df1 <- data.frame(id=c(1:5), b=c('a', 'b', 'f', 't', 'y'))
df2 <- data.frame(id=c(1:8), a=c('D', 'V', 'f', 't', 'y', 'z', 'p', 'x'))
答案 1 :(得分:0)
将您的输入视为df1
和df2
,您可以尝试:
library(dplyr)
library(tidyr)
df1 %>%
inner_join(df2, by = "id") %>%
gather(key = eh, value = meh, -id) %>%
select(id, meh)
给出:
id meh
1 1 a
2 2 b
3 3 f
4 4 t
5 5 y
6 1 D
7 2 V
8 3 f
9 4 t
10 5 y
P.S。使用新列名称,为by
join
参数变得很重要