【发布时间】:2020-04-13 14:28:12
【问题描述】:
我正在尝试过滤使用列索引(称为 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")
感谢您的帮助。
【问题讨论】:
-
您没有提供 test7,所以您的代码不允许我们重现您的问题
-
您需要
test7 %>% group_by(`Insider CIK`) %>% filter(any(`Transaction Type`=='P-Purchase') & (any(`Transaction Type`=='S-Sale' | `Transaction Type`=='M-Exempt')))吗? -
您提供的子集只有一个 Transaction Type 值。考虑提供更大的数据样本。
-
添加“any”即可。非常感谢您提供的非常有用的建议。