将一列数据框与另一列匹配,拉入其他列,合并为大型数据集

时间:2017-07-20 21:15:45

标签: r match zipcode

我在2列数字向量(R中)中获得了商店ID及其Zipcodes的列表。我正在使用" Zipcode"包(https://cran.rproject.org/web/packages/zipcode/zipcode.pdf)并可以访问这些邮政编码的经度/纬度坐标。邮政编码包有一个数据框,包含所有邮政编码的每个邮政编码,城市,州,经度和纬度(作为大型数据框)。

我希望获取我的Zipcodes的经度和纬度坐标,并将它们添加为第3列和第4列(即商店ID,邮政编码,长度,纬度)

有什么想法? 谢谢!

编辑:我已经尝试了合并功能(即)总计< -merged(CleanData,zipcode,by = zip)并且我收到错误,因为它们必须具有相同数量的列?

2 个答案:

答案 0 :(得分:0)

作为by参数传递的列名必须用引号括起来。在此示例中,您不需要合并中的by参数,如果 zipcode是两个数据框中唯一的公共列。

  

示例数据集:

#cleanData
d1<-tibble::tribble(~z,~id,131,1,114,2,155,5)

#zipcode
d2<-
tibble::tribble(~z,~x,~y,131,2,5,166,2,6,162,6,5,177,7,1,114,2,1,155,5,9)

result <- merge(d1,d2)

给出

       z id x y
    1 114  2 2 1
    2 131  1 2 5
    3 155  5 5 9

只需使用dplyr::select()即可从结果数据框中删除任何不必要的列。假设您不需要列 y (例如,可能是州名)

result <- dplyr::select(result, z, id, x)

答案 1 :(得分:0)

结束使用:How to join (merge) data frames (inner, outer, left, right)?

基本上我使用了Left Outer函数,因为我想将所有的zipcodes保存在我的商店数据库中。我相信上面的答案将消除第二个zipcodes列表中找不到的zipcodes。