如何过滤一个组内和另一个(参考)“ data.frame”中的观测值

时间:2019-02-05 19:08:02

标签: r dplyr

我希望根据组中的某些值(基于单独的表格)过滤掉数据中的观测值。我还尝试专门与dplyr合作,而我已经通过data.table执行了类似的任务,但我不确定如何完成它。

以下是一些示例数据来说明:

#Primary dataset
dat <- data.frame(account = c(1, 3, 3, 3, 5, 5, 7),
              ip = c("255.255.255", 
                     "255.255.255", "199.199.99", "255.255.255",
                     "75.75.75", "120.120.120",
                     "50.50.50"),
              value = c(50, 1000, 800, 2500, 3000, 500, 75))

我想从数据集中基于每个帐户的IP列表进行过滤,这是另一个表:

#Filtering reference table
exclude <- data.frame(account = c(3, 5),
                  ip = c("255.255.255", "120.120.120"))

过滤后,dat的期望输出为:

   account          ip value
 1       1 255.255.255    50
 2       3  199.199.99   800
 3       5    75.75.75  3000
 4       7    50.50.50    75

我特别不确定如何在group_by上的%>%动词的管道dplyr动词系列(dat)中的dplyr中包括引用。考虑到我仍然熟悉dplyr的编程风格,我可能也无法正确地完成任务,因此只要它在 val foo = new Object2IntOpenHashMap[String] foo.put("foo", 1) val bar = new Object2IntOpenHashMap[String] bar.put("foo", 1) bar.put("bar", 1) 之内,就可以采用与我考虑的参考方法不同的方式。

1 个答案:

答案 0 :(得分:0)

怎么样:

dat %>% mutate(accountip = paste0(account, ip)) %>% filter(!(accountip %in% paste0(exclude$account,exclude$ip))) %>% select(account, ip, value)