R 通过两个列名称合并两个行数不等的数据帧
我试图合并两个数据帧,比如说A和B,它们的行数和列数不等。它们有两个公共列,c1和c2。我知道一个事实,存在于一个数据帧中的每个c1 x c2组合也存在于另一个数据帧中,所以我不希望出现任何空值。A具有存在的每个c1 x c2组合的多个实例,而B恰好具有每个c1 x c2组合的一个实例。rbind和merge不起作用 如果两个数据帧是:R 通过两个列名称合并两个行数不等的数据帧,r,dataframe,dplyr,plyr,R,Dataframe,Dplyr,Plyr,我试图合并两个数据帧,比如说A和B,它们的行数和列数不等。它们有两个公共列,c1和c2。我知道一个事实,存在于一个数据帧中的每个c1 x c2组合也存在于另一个数据帧中,所以我不希望出现任何空值。A具有存在的每个c1 x c2组合的多个实例,而B恰好具有每个c1 x c2组合的一个实例。rbind和merge不起作用 如果两个数据帧是: c1 c2 c3 c4 1 A 1 5 1 2 B 2 4 2 3 B 1 3 4 4 A 2 3 4 5 A 1 3
c1 c2 c3 c4
1 A 1 5 1
2 B 2 4 2
3 B 1 3 4
4 A 2 3 4
5 A 1 3 3
6 B 2 1 8
及
然后我想以某种方式与c1和c2结合并产生:
c1 c2 c3 c4 c5
1 A 1 5 1 5
2 B 2 4 2 4
3 B 1 3 4 3
4 A 2 3 4 8
5 A 1 3 3 5
6 B 2 1 8 4
AA我们还可以使用join fromdata.table
和on
library(data.table)
setDT(df1)[df2, on= c("c1", "c2")][order(c1)]
# c1 c2 c3 c4 c5
#1: A 1 5 1 5
#2: A 1 3 3 5
#3: A 2 3 4 8
#4: B 2 4 2 4
#5: B 2 1 8 4
#6: B 1 3 4 3
我们还可以使用join fromdata.table
和on
library(data.table)
setDT(df1)[df2, on= c("c1", "c2")][order(c1)]
# c1 c2 c3 c4 c5
#1: A 1 5 1 5
#2: A 1 3 3 5
#3: A 2 3 4 8
#4: B 2 4 2 4
#5: B 2 1 8 4
#6: B 1 3 4 3
merge(A,B,by=c(“c1”,“c2”))
应该是workrdplyr::full_join(A,B)
,在这种情况下并不特别好。在这两种情况下,如果愿意,您可以指定要通过
连接的列,但无论如何,它将通过列名的交集连接,这就是您在这里想要的。merge(A,B,by=c(“c1”,“c2”)
should workerdplyr::full_join(A,B)
,在这种情况下并不特别好。在这两种情况下,如果愿意,您可以指定要通过
联接的列,但无论如何,它将通过列名的交集联接,这正是您想要的。
library(data.table)
setDT(df1)[df2, on= c("c1", "c2")][order(c1)]
# c1 c2 c3 c4 c5
#1: A 1 5 1 5
#2: A 1 3 3 5
#3: A 2 3 4 8
#4: B 2 4 2 4
#5: B 2 1 8 4
#6: B 1 3 4 3