从列表中匹配行的数据框中删除行

时间:2018-09-10 11:16:19

标签: r filter merge conditional

从数据框中删除与列表中的值匹配的行> 我的帐户清单如下:

ANrule4 <- 
Group_Account
2911
2944
2949
1415
1695
1761
1912
2570

但是我想删除以下列表中列出的任何帐户:

2911
2946
2945
2944
2949

我正在使用以下代码:

ANrules4ex <- ANrule4%>%
              filter(!(Group_Account==2946 | Group_Account==2945 | Group_Account==2944 | Group_Account==2942 | Group_Account==2941 |   Group_Account==2912 | Group_Account==2911 | Group_Account==2910 ))

这工作正常,但实际上我的列表很长而且很动态,我想将排除列表存储在一个列表中,并希望合并这两个列表,使所有帐户都列在排除列表中,但不确定如何做到这一点。有人可以帮助我

2 个答案:

答案 0 :(得分:1)

尝试一下: df是您的data.framedata是您要比较的向量。

df[!(df$Group_Account %in% data),]

答案 1 :(得分:0)

您可以使用anti_join软件包中的dplyr

ANrule4 <-
  data.frame(Group_Account = c(2911, 2944, 2949, 1415, 1695, 1761, 1912, 2570))

listremove <-
  data.frame(Group_Account = c(2911, 2946, 2945, 2944, 2949))

ANrule4 %>% anti_join(listremove, by = "Group_Account")

  Group_Account
1          1415
2          1695
3          1761
4          1912
5          2570