我想创建一个新的数据框,从另一个数据框中借用一个ID变量。我想要合并的数据框在ID列中重复观察,这导致了一些问题。
DF1<-data.frame(ID1=rep(c("A","B", "C", "D", "E") , 2), X1=rnorm(10))
DF2<-data.frame(ID1=c("A", "B", "C", "D", "E"), ID2=c("V","W","X","Y" ,"Z"), X2=rnorm(5), X3=rnorm(5))
我想通过ID1列将DF2 $ ID2附加到DF上。我的目标看起来像这样(我不想在目标&#39;数据框中使用DF2 $ X2和DF $ X3):
Goal<-data.frame(ID2=DF2$ID2, DF1)
我尝试过合并但它抱怨因为DF1 $ ID1不是唯一的。我知道R可以用一行代码来解决这个问题,但我似乎无法使我认识的函数发挥作用。任何帮助将不胜感激!
答案 0 :(得分:3)
简单合并应该没有问题。使用您的样本数据
merge(DF1, DF2[,c("ID1","ID2")], by="ID1")
产生
ID1 X1 ID2
1 A 0.03594331 V
2 A 0.42814900 V
3 B -2.17161263 W
4 B -0.33403550 W
5 C 0.95407844 X
6 C -0.23186723 X
7 D 0.46395514 Y
8 D -1.49919961 Y
9 E -0.20342430 Z
10 E -0.49847569 Z
答案 1 :(得分:1)
您还可以使用left_join
library(dplyr)
library(dplyr)
left_join(DF1, DF2[,c("ID1", "ID2")])
# ID1 X1 ID2
#1 A -1.20927237 V
#2 B -0.03003128 W
#3 C -0.75799708 X
#4 D 0.53946986 Y
#5 E -0.52009921 Z
#6 A 1.15822659 V
#7 B -0.91976194 W
#8 C 0.74620142 X
#9 D -2.46452560 Y
#10 E 0.80015219 Z