用 dplyr 过滤“要么”“或”

LDT*_*LDT 5 r dataframe dplyr tidyverse

我有一个看起来像这样的 data.frame。

dat1=data.frame(time=c(1,2,1,2,1,2,1,2), team=c("A","A","A","A","B","B","C","C"), name=c("LT","LT","CH","CH","CH","CH","AT","AT"))

time team name
 1    A     LT
 2    A     LT
 1    A     CH
 2    A     CH
 1    B     CH
 2    B     CH
 1    C     AT
 2    C     AT

Run Code Online (Sandbox Code Playgroud)

我想对 dplyr 说,请 group_by "team" 并过滤包含名称 "LT" 的每个团队的行。如果团队不包含名称“LT”,则过滤名称“CH”。

我希望我的 data.frame 看起来像这样。

time team name
 1    A     LT
 2    A     LT
 1    B     CH
 2    B     CH

Run Code Online (Sandbox Code Playgroud)

任何帮助都受到高度赞赏

tmf*_*mnk 2

一种dplyr选择可能是:

dat1 %>%
 group_by(team) %>%
 filter(if(any(name == "LT")) name == "LT" else name == "CH")

   time team  name 
  <dbl> <fct> <fct>
1     1 A     LT   
2     2 A     LT   
3     1 B     CH   
4     2 B     CH 
Run Code Online (Sandbox Code Playgroud)