【问题标题】:Left Joining to multiple list tbl's左加入多个列表 tbl
【发布时间】:2018-10-04 16:58:32
【问题描述】:

我有一个嵌套在一个列表中的多个 tbl。所有 tbl df 都有一个 ZIPCode 列。我有一张表格,我从邮政编码包中接收数据,这样我就可以获得每个邮政编码的纬度和经度。

我想将纬度和经度加入到每个 tbl 上,以便稍后用于传单。我尝试将其设置为:

zip = lapply(myfiles, function(x){
z = left_join(myfiles, zip_filtered, by=c("ZIPCode"="zip"))
return(z)
})

这会引发以下错误:

UseMethod("left_join") 中的错误: 没有适用于“list”类对象的“left_join”方法

然后我尝试了以下方法来通过:

zip = lapply(myfiles, function(x){
z = x[,left_join(x, zip_filtered, by=c("ZIPCode"="zip"))]
return(z)
})

这给了我以下信息:错误:不支持的索引类型:tbl_df。

最好的方案是将纬度和经度两列附加到列表中的所有六个 tbl_df,但不确定如何执行此操作,这就是我开始沿着这条路线走下去的原因。

谢谢!

【问题讨论】:

  • 您的第一个lapply 使用匿名function(x),但它从不使用x。在匿名函数中,将myfiles 替换为x
  • 鉴于您关于仅附加列的评论,如果您不需要join(因为您知道行的顺序已经正确)然后zip = lapply(myfiles, cbind, zip_fiiltered)
  • 你也可以rbindlist()不同的tbl't在一起(你可以使用参数idcol将不同的表保持在不同的组中),然后left_join y[x, on...]纬度/经度坐标

标签: r list dplyr geocoding


【解决方案1】:

试试这个as seen here

myfiles %>% reduce(left_join)

【讨论】:

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