“过滤器”;或&引用;或;用dplyr
我有一个像这样的data.frame“过滤器”;或&引用;或;用dplyr,r,dataframe,dplyr,tidyverse,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",&q
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
time team name
1 A LT
2 A LT
1 B CH
2 B CH
我想对dplyr说,请按“团队”将_分组,并过滤包含名称“LT”的每个团队的行。如果团队不包含名称“LT”,则在名称“CH”中进行筛选
我希望我的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
time team name
1 A LT
2 A LT
1 B CH
2 B CH
非常感谢您的帮助一个
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
dat1%>%
组别(组别)%>%
过滤器(如果有(名称==“LT”))名称==“LT”其他名称==“CH”)
时间团队名称
1 A LT
2 A LT
3.1 B CH
4.2 B CH
我们可以在按“团队”分组后,根据“名称”中的first
值,先排列
,然后过滤
library(dplyr)
dat1 %>%
filter(name %in% c("LT", "CH")) %>%
arrange(team, ordered(name, levels = c('LT', 'CH'))) %>%
group_by(team) %>%
filter(name %in% first(name))