r - 如何过滤组内和另一个(参考)`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
.
解决方案
怎么样:
dat %>%
mutate(accountip = paste0(account, ip)) %>%
filter(!(accountip %in% paste0(exclude$account,exclude$ip))) %>%
select(account, ip, value)
推荐阅读
- c# - 更新列表数组列表的列表 mongo update
- php - 在 php+mysql 中使用带斜杠(查询)
- matlab - 将 n 个长度为 p 的向量乘以 n 个大小为 pxp 的矩阵
- mongoose - 摩卡在包含承诺的“之前”之后没有继续,只是挂起
- python - 打印给定序列中相同频率的所有氨基酸
- mysql - SQL 问题。在一张桌子上找到爱好相同的两个人
- corda - 匿名用户可以访问区块链吗?
- python-3.x - 在没有 reset_index 的情况下向 pandas 缓慢添加新列
- mysql - mySQL - 显示每天的第一个和最后一个日志
- jsf - 可拖动的输入组件 PrimeFaces