左联接缺少左手侧

时间:2019-06-14 09:21:48

标签: r dplyr

我正在尝试使用用户从闪亮的应用程序的数据表中选择的两列来连接两个数据框

我想使用我在变量中添加的列名称来加入它们。但是,当我进行左联接时,会出现错误。当我使用名称字符时,效果很好。

我的代码

EndoDate<-colnames(RV$data[as.numeric(input$endotable_columns_selected[1])])
EndoNum<-colnames(RV$data[as.numeric(input$endotable_columns_selected[2])])
PathDate<-colnames(RV2$data[as.numeric(input$endotable_columns_selected[1])])
PathNum<-colnames(RV2$data[as.numeric(input$endotable_columns_selected[2])])

这不起作用:

left_join(RV$data,RV2$data,by = c(EndoDate=PathDate,EndoNum=PathNum))

..但这确实有效

left_join(RV$data,RV2$data,by = c("endo_resultperformed"="endo_resultperformed","hospitalnumber"="hospitalnumber"))

我需要使用用户选择的列名。我该怎么做并加入?这是dplyr符号的问题吗?

1 个答案:

答案 0 :(得分:1)

我们可以使用setNames

library(dplyr)
band_members$id <- 1:3
band_instruments$id_num <- c(2,3,1)

xid='id'
xid1='name'
yid='id_num'
yid1='plays'

band_members %>% left_join(band_instruments, by=setNames(nm=c(xid,xid1),c(yid,yid1)))

# A tibble: 3 x 4
  name  band       id plays 
  <chr> <chr>   <dbl> <chr> 
1 Mick  Stones      1 NA    
2 John  Beatles     2 guitar
3 Paul  Beatles     3 bass

PS:此答案基于@MrFlick答案here