所以这是我的名为qb
的表:
GameID Qtr Drive Down Passer
1 1 1 1 A
1 1 2 1 A
1 1 2 2 A
1 1 2 3 A
这是第二个名为sacks
的表,我想用它来过滤
gameId Qtr Drive Down Sack
1 1 2 2 yes
1 1 2 3 yes
我尝试过滤QB表的行,其中gameID,Drive和Down与sacks表中的相同。
GameID Qtr Drive Down Passer
1 1 2 2 A
1 1 2 3 A
我尝试了dplyr
和qb %>% filter(Drive == sacks$Drive & Down==sacks$Down & gameID==sacks$gameID)
,但它不起作用。我可以使用merge但是寻找一些“过滤器解决方案”(我的例子比我想要处理的更简单)。我也收到了奇怪的警告
编辑:我认为我过分复杂了我的问题。我会再试一次。我有表格qb,如示例和第二个表格,其中我有2列:gameID和Drive。作为我的最终结果,我希望看到GameID = gameID和Drive = Drive 的所有行In addition: Warning messages: 1: In c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, : longer object length is not a multiple of shorter object length 2: In c(NA, 1, 1, 2, 1, 1, 1, 2, 2, 3, 4, 1, 1, 1, 1, 2, 3, 4, 1, 2, : longer object length is not a multiple of shorter object length
答案 0 :(得分:1)
您可以使用基本子集:
qb[qb$GameID == sacks$gameId &
qb$Drive == sacks$Drive &
qb$Down == sacks$Down,]
# GameID Qtr Drive Down Passer
#3 1 1 2 2 A
#4 1 1 2 3 A
答案 1 :(得分:1)
dplyr::semi_join
就是为此而建的:
library(dplyr)
semi_join(qb, sacks %>% rename(GameID = gameId))
## GameID Qtr Drive Down Passer
## 1 1 1 2 2 A
## 2 1 1 2 3 A
您可以使用by
参数代替rename
,但在这种情况下更多的输入。