【问题标题】:Left join missing left hand side [duplicate]左连接缺少左侧[重复]
【发布时间】:2019-06-14 09:21:48
【问题描述】:

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

我想使用我放入变量中的列名来加入它们。但是,当我进行左连接时,出现错误。当我使用名称的字符时,它可以正常工作。

我的代码

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 的问题吗?

【问题讨论】:

  • 这个有用吗:dplyr.tidyverse.org/articles/…。我无法尝试,因为您没有共享示例数据。另外,你的意思是数据表还是数据框?如果是第一个,那么请添加标签。

标签: r dplyr


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多