如何根据其他数据框中的列组合选择行

时间:2016-01-21 08:54:23

标签: r data.table dplyr

我有两个数据框(data.1data.2),其中包含三列(CITYCOUNTYSTATE)。

我想要的是根据第二个数据帧中存在的三列中的值来过滤第一个数据帧(可能有额外的,所以我需要交集)。虽然我可以在这里生成一个有效的代码:select rows in one data frame that partially match rows in another data frame

我希望有一个更通用的解决方案,例如,传递列的名称。我在left_join中使用dplyr知道了一个解决方案,但我不需要额外的列,我只想过滤。

data.1 <- read.table(text= "
     CITY     COUNTY   STATE        AA
       1          1         1        2
       2          1         1        4
       1          2         1        6
       2          2         1        8
       1          1         2       20
       2          1         2       40
       1          2         2       60
       2          2         2       80
       1          1         3      200
       2          1         3      400
       1          2         3      600
       2          2         3      800
       1          1         4     2000
       2          1         4     4000
       1          2         4     6000
       2          2         4     8000
       1          1         5    20000
       2          1         5    40000
       1          2         5    60000
       2          2         5    80000
", header=TRUE, na.strings=NA)

data.2 <- read.table(text= "
     CITY     COUNTY     STATE      BB
       1          1         2      -10
       2          1         2      -11
       1          2         2      -12
       2          2         2      -13
       1          1         4      -14
       2          1         4      -15
       1          2         4      -16
       2          2         4      -17
       3          3         4      -18
", header=TRUE, na.strings=NA)

desired.result <- read.table(text= "
     CITY     COUNTY    STATE       AA
       1          1         2       20
       2          1         2       40
       1          2         2       60
       2          2         2       80
       1          1         4     2000
       2          1         4     4000
       1          2         4     6000
       2          2         4     8000
", header=TRUE, na.strings=NA)

我怎样才能做到这一点?

0 个答案:

没有答案