R 条件上的筛选器组在不同字段中只有一个值

R 条件上的筛选器组在不同字段中只有一个值,r,dplyr,tidyr,R,Dplyr,Tidyr,我试图在data.frame上完成最终筛选以排除组,在本例中,这些组是“内幕CIK”编号,其中与该组相关的“交易类型”仅为三个选项之一:“p-购买”、“S-销售”、“m-豁免”。这些值的组合对于一个组,我想保持它们都相同的情况。第二个按组只过滤一个条目的条目可以根据需要工作 这是我的脚本和dput: test12 <- test12 %>% group_by(`Insider CIK`) %>% filter(all(c("P-Purchase", "S-Sale", "M-E

我试图在data.frame上完成最终筛选以排除组,在本例中,这些组是“内幕CIK”编号,其中与该组相关的“交易类型”仅为三个选项之一:“p-购买”、“S-销售”、“m-豁免”。这些值的组合对于一个组,我想保持它们都相同的情况。第二个按组只过滤一个条目的条目可以根据需要工作

这是我的脚本和dput:

test12 <- test12 %>% group_by(`Insider CIK`) %>% filter(all(c("P-Purchase", "S-Sale", "M-Exempt") %in% `Transaction Type`) | n()>1)


structure(list(`Insider CIK` = c("0001418814", "0001418814", 
"0001418814"), `Insider Full Name and CIK` = c("ValueAct Holdings, L.P. (0001418814)", 
"ValueAct Holdings, L.P. (0001418814)", "ValueAct Holdings, L.P. (0001418814)"
), `Acquistion or Disposition` = structure(c(1L, 1L, 1L), .Label = c("A", 
"D", "-"), class = "factor"), `Transaction Date` = structure(c(18334, 
18333, 18332), class = "Date"), `Deemed Execution Date` = structure(c(1L, 
1L, 1L), .Label = "Â", class = "factor"), Issuer = c("HAWAIIAN ELECTRIC INDUSTRIES INC", 
"HAWAIIAN ELECTRIC INDUSTRIES INC", "HAWAIIAN ELECTRIC INDUSTRIES INC"
), Form = structure(c(1L, 1L, 1L), .Label = c("4", "3"), class = "factor"), 
    `Transaction Type` = c("P-Purchase", "P-Purchase", "P-Purchase"
    ), `Direct or Indirect Ownership` = structure(c(2L, 2L, 2L
    ), .Label = c("--D", "--I"), class = "factor"), `Number of Securities Transacted` = c(542252, 
    400060, 755600), `Issuer CIK` = structure(c(4L, 4L, 4L), .Label = c("0000750574", 
    "0000007431", "0000100726", "0000354707", "0000885590", "0001101215", 
    "0001137789", "0001655075", "0001739445", "0001512499", "0000874761", 
    "0001140536", "0001308161", "0001099800", "0001280776", "0001314102", 
    "0001389072", "0001642545"), class = "factor"), `Security Name` = structure(c(3L, 
    3L, 3L), .Label = c("common stock", "Common Shares, no par value", 
    "Common Stock", "Forward Purchase Contract", "Ordinary Shares", 
    "Physically Settled Forwards", "Series A Non-Voting Convertible Preferred Stock", 
    "Class A Common Stock", "Class B Common Stock", "Deferred Stock Units", 
    "Forward purchase contract", "Ordinary Shares, nominal value $0.000304635", 
    "Ordinary Shares, nominal value $0.000304635 per share", 
    "Units", "Employee Stock Option (Right to Acquire)", "Performance Rights", 
    "Common stock", "Employee Stock Option (right to buy)", "Restricted Stock Unit", 
    "Restricted Stock Units", "Senior Convertible Preferred Stock", 
    "Stock Option (right to buy)", "Stock Option (Right to Buy)", 
    "Stock Options (Right to Buy)"), class = "factor"), `Days Since Most Recent Filing` = structure(c(0, 
    1, 2), class = "difftime", units = "days"), firstTransactionDate = structure(c(18334, 
    18334, 18334), class = "Date")), row.names = c(NA, -3L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), groups = structure(list(`Insider CIK` = "0001418814", 
    .rows = list(1:3)), row.names = c(NA, -1L), class = c("tbl_df", 
"tbl", "data.frame")))
test12%groupby(`Insider CIK`)%%>%filter(交易类型`中的所有(c(“P-Purchase”、“S-Sale”、“M-except”))%n()>1)
结构(列表(`Insider CIK`=c(“0001418814”、“0001418814”),
“0001418814”),`Insider全名和CIK`=c(“ValueAct Holdings,L.P.(0001418814)”,
“ValueAct控股有限公司(0001418814)”,“ValueAct控股有限公司(0001418814)”
),`acquisition或Disposition`=结构(c(1L,1L,1L),.Label=c(“A”),
“D”、“-”,class=“factor”),`Transaction Date`=结构(c(18334,
1833318332),class=“Date”),“视为执行日期”=结构(c(1L,
1L,1L),.Label=,class=,factor),发行人=c(“夏威夷电力工业公司”,
“夏威夷电力工业公司”、“夏威夷电力工业公司”
),形式=结构(c(1L,1L,1L),.Label=c(“4”,“3”),class=“factor”),
`交易类型`=c(“采购订单”、“采购订单”、“采购订单”
),`直接或间接所有权`=结构(c(2L,2L,2L
),Label=c(“--D”,“--I”),class=“factor”),`交易证券数量`=c(542252,
400060755600),`Issuer CIK`=结构(c(4L,4L,4L),.Label=c(“0000750574”),
"0000007431", "0000100726", "0000354707", "0000885590", "0001101215", 
"0001137789", "0001655075", "0001739445", "0001512499", "0000874761", 
"0001140536", "0001308161", "0001099800", "0001280776", "0001314102", 
“0001389072”、“0001642545”、class=“factor”)、`Security Name`=结构(c(3L、,
3L,3L),标签=C(“普通股”,“普通股,无面值”,
“普通股”、“远期购买合同”、“普通股”,
“实物结算远期”、“A系列无表决权可转换优先股”,
“A类普通股”、“B类普通股”、“递延股单位”,
“远期购买合同”、“普通股,面值0.000304635美元”,
“普通股,每股面值0.000304635美元”,
“单位”、“员工股票期权(收购权)”、“履约权”,
“普通股”、“员工股票期权(购买权)”、“限制性股票单位”,
“限制性股票单位”、“高级可转换优先股”,
“股票期权(购买权)”,“股票期权(购买权)”,
“股票期权(购买权)”,class=“factor”),`自最近提交以来的天数`=结构(c(0,
1,2),class=“difftime”,units=“days”,firstTransactionDate=结构(c(18334,
1833418334),class=“Date”)),row.names=c(NA,-3L),class=c(“分组的”,
“tbl_df”、“tbl”、“data.frame”),组=结构(列表(`Insider CIK`=“0001418814”),
.rows=list(1:3)),row.names=c(NA,-1L),class=c(“tbl_df”,
“tbl”、“data.frame”))
谢谢您的帮助。

我们不需要
n()==1
条件,因为每行不可能有超过一个
事务类型

library(dplyr)
test12 %>% 
      group_by(`Insider CIK`) %>%
      filter(all(c("P-Purchase", "S-Sale", "M-Exempt") %in% `Transaction Type`))
或者,如果OP想要
n()==1
,它将是
|

test12 %>% 
      group_by(`Insider CIK`) %>%
      filter(all(c("P-Purchase", "S-Sale", "M-Exempt") %in% `Transaction Type`) |n() == 1)
我们不需要
n()==1
条件,因为每行不可能有超过一个
事务类型

library(dplyr)
test12 %>% 
      group_by(`Insider CIK`) %>%
      filter(all(c("P-Purchase", "S-Sale", "M-Exempt") %in% `Transaction Type`))
或者,如果OP想要
n()==1
,它将是
|

test12 %>% 
      group_by(`Insider CIK`) %>%
      filter(all(c("P-Purchase", "S-Sale", "M-Exempt") %in% `Transaction Type`) |n() == 1)

你能显示预期的输出吗。该示例显示,在这种情况下,只有3行预期输出将为空,因为对于交易类型仅为“P-Purchase”的组ID,您是否需要
test12%>%groupby(
Insider CIK
)%%>%filter(!(所有(c(“P-Purchase”、“S-Sale”、“M-Except”)%in%
交易类型
)\n()>1))
能否显示预期的输出。该示例显示,在这种情况下,只有3行预期输出将为空,因为对于交易类型仅为“P-Purchase”的组ID,您是否需要
test12%>%groupby(
Insider CIK
)%%>%filter(!(所有(c(“P-Purchase”、“S-Sale”、“M-Except”)%in%
交易类型
)\n()>1))
我希望保留现有条件,即对于只有一个条目的组ID,我也希望删除这些条目。@js80是否需要
过滤器(全部(c(“P-Purchase”、“s-Sale”、“M-Except”)%in%
交易类型
)|n_distinct(
交易类型`==1)我认为不需要对交易类型进行n_不同的调整。这是可行的,但我想把这个条件和CIK数为1的观测数联系起来。即,只有一次购买或出售不合格。感谢您的帮助。@js80我没有正确理解这个逻辑。我的理解是,如果您将所有三个元素
“P-Purchase”、“S-Sale”、“M-empt”
都存在于一个组中,那么请对其进行过滤。带有
n()>1
的第二部分不可用clear@js80假设您的交易类型组只有“P-Purchase”,并且有3行,即重复。如果有第一个条件,它仍然会失败。我希望保留现有条件,即对于只有一个条目的组ID,我也希望删除这些条目。@js80是否需要
过滤器(所有(c(“P-Purchase”、“s-Sale”、“M-Except”)%in%
交易类型
)\n|u distinct(
交易类型`==1)我认为不需要对交易类型进行n_不同的调整。这是可行的,但我想把这个条件和CIK数为1的观测数联系起来。即,只有一次购买或出售不合格。感谢您的帮助。@js80我没有正确理解这个逻辑。我的理解是,如果您将所有三个元素
“P-Purchase”、“S-Sale”、“M-empt”
都存在于一个组中,那么请对其进行过滤。