R 在多个模糊匹配上合并2个数据表

R 在多个模糊匹配上合并2个数据表,r,R,我有两个data.tables,它们的变量名顺序不明确: 我想合并dt1和dt2。但实际上,无论信息在哪一列,我都想加入 dt3=inner_join(dt1,dt2,by=c('Col1','Col2')) #Won't join all 4;only 2. 我无法统一这些列,因为实际上有许多列(>100),并且它们无法可靠地排序)。有没有一种方法可以将这四种观察结合起来 > dput(dt1) structure(list(Col1 = c("Todd", "Leroy", "

我有两个data.tables,它们的变量名顺序不明确:

我想合并dt1和dt2。但实际上,无论信息在哪一列,我都想加入

dt3=inner_join(dt1,dt2,by=c('Col1','Col2')) #Won't join all 4;only 2.  
我无法统一这些列,因为实际上有许多列(>100),并且它们无法可靠地排序)。有没有一种方法可以将这四种观察结合起来

> dput(dt1)
structure(list(Col1 = c("Todd", "Leroy", "Ham", "Tiffon"), Col2 = c("Sally", 
"Brown", "York", "Maude"), Y1 = c(687.4, 12.9, 34.6, 34.6)), row.names = c(NA, 
-4L), class = c("data.table", "data.frame"))
> dput(dt2)
structure(list(Col1 = c("Sally", "Leroy", "York", "Tiffon"), 
    Col2 = c("Todd", "Brown", "Ham", "Maude"), Y1 = c(343.1, 
    5748.6, 942.5, 365.5)), row.names = c(NA, -4L), class = c("data.table", 
"data.frame"))
所需输出(不关心它如何输出Col1、Col2变量):


如果我没弄错你的问题,我不知道。但是如何生成一个排序的合并id呢?可以使用合并id

dt1 <- structure(list(V1 = c("Obs1", "Obs2", "Obs3", "Obs500"), 
               V2 = c("Sally", "Leroy", "York", "Tiffon"), 
               V3 = c("Todd", "Brown", "Ham", "Maude")),row.names =  c(NA, -4L),
               class = c("data.frame"))  
dt1

dt2 <- structure(list(V1 = c("Obs1", "Obs2", "Obs3", "Obs500"), 
               V2 = c("Todd", "Leroy", "Ham", "Tiffon"), 
               V3 = c("Sally", "Brown", "York", "Maude")), row.names =  c(NA, -4L),
               class = c("data.frame"))
dt2

columns <- c("V2","V3")

order_paste <- function (x) {

  x_sorted <- sort(x)
  x_sorted_paste <- paste(x_sorted,collapse = "")
  return(x_sorted_paste)

}

dt1$merge_id <- apply(dt1[columns],1, order_paste)
dt2$merge_id <- apply(dt2[columns],1, order_paste)

dt3<-dplyr::inner_join(dt1,dt2,by=c('merge_id'))

dt1所以您只想通过行名(Obs1,Obs2,…)加入?加入后,您希望的输出是什么样子的?希望为了清晰起见进行了编辑。最初数据的
dput
构造不良,列名称为第1行。修复了dput并删除了内部自指针(对我造成了问题),将无法生成合并id