如何在两个数据框中找到匹配值?

时间:2018-05-05 08:55:41

标签: r dplyr

我正在处理住房数据集,并且我试图看看当房屋被出售时,彼此相邻的两个县的房屋是否被记录在彼此的销售中。

以下是我的数据示例:

阿拉米达县

             date         county          city   zip   price
1  2003-04-27 Alameda County    Pleasanton 94588  565000
2  2003-04-27 Alameda County       Oakland 94618  387500
3  2003-04-27 Alameda County        Dublin 94568  450000
4  2003-04-27 Alameda County        Newark 94560  470000
5  2003-04-27 Alameda County     Livermore 94550 1120000
6  2003-04-27 Alameda County       Alameda 94501  526000
7  2003-04-27 Alameda County       Fremont 94538  325000
8  2003-04-27 Alameda County     Livermore 94550  930500
9  2003-04-27 Alameda County       Hayward 94542  525000
10 2003-04-27 Alameda County Castro Valley 94546  610000

康特拉科斯塔县

         date              county         city   zip  price
1  2003-04-27 Contra Costa County  El Sobrante 94803 325000
2  2003-04-27 Contra Costa County      Concord 94519 347000
3  2003-04-27 Contra Costa County      Concord 94521 366000
4  2003-04-27 Contra Costa County Walnut Creek 94598 495000
5  2003-04-27 Contra Costa county      Concord 94519 370000
6  2003-04-27 Contra Costa County      Concord 94520 219000
7  2003-04-27 Contra Costa County      Antioch 94531 387000
8  2003-04-27 Contra Costa county      Clayton 94517 522000
9  2003-04-27 Contra Costa County      Antioch 94531 406500
10 2003-04-27 Contra Costa County      Antioch 94509 345000

我正在考虑使用dplyr和过滤器动词,但我认为这需要一个大的逻辑表达式。如何检查两个数据框是否具有相同的城市或邮政编码?

1 个答案:

答案 0 :(得分:0)

另一个简单的解决方案是merge()。例如:

df1 <- data.frame(
    city = LETTERS[1:5],
    some_random_var1 <- sample(1:500, 5)
    )
df2 <- data.frame(
    city = sample(LETTERS, 5)
    some_random_var2 <- sample(50:1000, 5)
    )
merge(df1, df2)
  city some_random_var1 some_random_var2
  1    B              151               82
  2    D              321              668

默认情况下,数据框合并在具有相同列名的列上(在这种情况下为&#39; city&#39;)。如果列具有不同的名称,则可以通过参数by.xby.y指定这些列。