데이터 프레임을 조건부로 필터링하려고합니다.
다음은 내 데이터 프레임의 간단한 예입니다.
library(dplyr)
head(FG_Pitchers_2002_2016)
Players Year Team Start-IP Relief-IP Position
Zack Segovia 2009 Nationals 0.0 10.1 RP
Zack Segovia 2007 Phillies 5.0 0.0 SP
Zack Wheeler 2014 Mets 185.1 0.0 SP
Zack Wheeler 2013 Mets 100.0 0.0 SP
Zeke Spruill 2014 Diamondbacks 5.1 17.1 RP
Zeke Spruill 2013 Diamondbacks 7.0 4.1 SP
내가하고 싶은 것은 얻을 것입니다 Players
모두 플레이 한 사람들 SP
과 RP
. 따라서 출력은 다음과 같아야합니다.
Players Year Team Start-IP Relief-IP Position
Zack Segovia 2009 Nationals 0.0 10.1 RP
Zack Segovia 2007 Phillies 5.0 0.0 SP
Zeke Spruill 2014 Diamondbacks 5.1 17.1 RP
Zeke Spruill 2013 Diamondbacks 7.0 4.1 SP
Zack Wheeler가 필터링되는 이유는 Position
열에 SP
. 잭 세고비아 & 제케 스프 루일 모두 숙박 그들은 모두 가지고 있기 때문에 RP
그리고 SP
에 Position
열입니다.
이 작업을 수행하는 여러 가지 방법을 시도했습니다. 주로 이름별로 그룹화 한 다음 필터링을 시도했지만 작동하지 않았습니다. 내가 실험 한 코드의 예 :
FG_Pitchers_2002_2016_1 <- FG_Pitchers_2002_2016 %>%
group_by(Players) %>%
filter(Position == "RP" | Position == "SP") %>%
as.data.frame()
아무도이 출력을 생성하는 방법을 알고 있습니까?
이것이 내가 시도한 것입니다.
df %>% group_by(Players) %>%
mutate(wRP = any(Position == 'RP'),
wSP = any(Position == 'SP')) %>%
ungroup() %>%
filter(wRP == T, wSP == T) %>%
select(-wRP, -wSP)
aosmith의 의견을 기반으로 :
df %>%
group_by(Players) %>%
filter(all(c('RP', 'SP') %in% Position))
또는
df %>%
group_by(Players) %>%
filter(any(Position == 'SP') & any(Position == 'RP'))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다