首页 > 解决方案 > 如何过滤组内和另一个(参考)`data.frame`的观察结果

问题描述

我希望根据组的某些值过滤掉我的数据中的观察结果,该组基于一个单独的表。我也尝试专门与我一起工作,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.

标签: rdplyr

解决方案


怎么样:

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


推荐阅读