r - R数据框按类别ID过滤多个逻辑条件
问题描述
我正在尝试过滤使用列索引(称为 Insider CIK)的数据框。我想使用逻辑测试来排除表中没有 P-Purchase 和 S-Sale 或 M-Exempt 的 CIK 编号。每行都是由相应的 CIK 编号标识的单独交易,有些可以是 P-Purchases 或 S-Sales,因此如果对于给定的 CIK 编号,如果它们是交易日志仅是一种类型,我想删除它们。我已经尝试过 dplyr 过滤器功能,但我这样做的方式只考虑每一行以及它是否满足条件而不是整个组(CIK 编号)。
这是我的示例脚本和一个 dput:
test8 <- test7 %>% group_by(`Insider CIK`) %>% filter(`Transaction Type`=='P-Purchase' & `Transaction Type`=='S-Sale' | `Transaction Type`=='M-Exempt')
dput(head(test7[c('Insider CIK', 'Transaction Type')], 100))
structure(list(`Insider CIK` = c("0001027035", "0001027035",
"0001027035", "0001027035", "0001027035", "0001027035", "0001032553",
"0001032553", "0001032553", "0001032553", "0001032553", "0001032553",
"0001032553", "0001032553", "0001032553", "0001032553", "0001032553",
"0001032553", "0001032553", "0001032553", "0001032553", "0001032553",
"0001032553", "0001032553", "0001032553", "0001032553", "0001032553",
"0001032553", "0001032553", "0001032553", "0001032553", "0001032553",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331", "0001033331", "0001033331",
"0001033331", "0001033331", "0001033331"), `Transaction Type` = c("S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "M-Exempt", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "M-Exempt",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "M-Exempt",
"S-Sale", "M-Exempt", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "S-Sale", "M-Exempt", "S-Sale",
"M-Exempt", "S-Sale", "S-Sale", "S-Sale", "M-Exempt", "S-Sale",
"S-Sale", "S-Sale", "S-Sale", "M-Exempt", "S-Sale", "S-Sale",
"M-Exempt", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"M-Exempt", "S-Sale", "S-Sale", "S-Sale", "S-Sale", "S-Sale",
"S-Sale", "S-Sale", "S-Sale")), row.names = 2:101, class = "data.frame")
我很感激帮助。
解决方案
这是一个选项data.table
library(data.table)
setDT(test7)[, .SD[any(`Transaction Type`=='P-Purchase') &
(any(`Transaction Type`=='S-Sale' | `Transaction Type`=='M-Exempt')], by = `Insider CIK`]
推荐阅读
- datetime - 如何使用 sas.ds_write 作为日期时间值格式化在 Lua 中创建的 SAS 数据集中的变量?
- python - 从 Pandas Dataframe 中提取 Frozenset 项目
- angular - 自定义 Web 组件和 Angular
- php - 字符串中的表单发送的单引号是不同的服务器端
- python - OneHotEncoder 在 SimpleImputer 已被调用后引发 NaN 问题
- node.js - 如何修复 CORS 错误:请求未通过访问控制检查?
- javascript - 如何以角度固定 404(未找到)
- php - 如何回显数组的特定值?
- php - 如何使用 jquery 插入锚标记
- php - 我想根据 page_id 显示不同的内容,但是在每个页面上'echo page_id'结果都是一样的