如果另一个数据框中存在2个值,则删除行

时间:2017-05-08 19:42:07

标签: r dataframe

我有2个包含相同列的数据框。一个叫做newGames,另一个称为existingGames。我想要做的是检查comap是两个数据帧之间的newGames game_pk和sv_id列。如果两个表中都存在game_pk和sv_id,我想从newGames数据框中删除该行。

        N.game_pk   N.sv_id           E.game_pk   E.sv_id
 1      440697      123456_789012     NA          NA
 2      440698      123456_789012     440698      NA
 3      440699      123456_789012     440699      123456_789012

e。代表现有的游戏数据框,N代表newGames数据框。我最终想要的是一个newGames数据框,它显示了现有游戏数据框中不存在egame_pk和e.sv_id(整个游戏)或e.sv_id(游戏中的单个游标)的所有列。 Sv_id是一个时间戳,因此可以为不同的game_pk提供相同的值,因此"组合"这些字段使行唯一。

这适用于缺少游戏(440697)

 newGames2 <- newGames[!(newGames$game_pk %in% existingGames$game_pk),]

但我试过

 newGames2 <- newGames[!(newGames$game_pk %in% existingGames$game_pk) | (!(newGames$game_pk %in% existingGames$game_pk) & !(newGames$sv_id %in% existingGames$sv_id)),]

它只选择完整的数据帧而不是单个丢失的音高。

1 个答案:

答案 0 :(得分:2)

以下是来自anti_join的{​​{1}}如何做到这一点:

dplyr