2017-04-13 2 views
0

Geschachtelte Filterung in dplyr?

Die folgenden zwei Code-Chunks funktionieren beide, aber ich bin daran interessiert, ob der zweite Code-Chunk (mit dplyr) in einem Rutsch mit Pipes getan werden könnte? Oder die Art, wie ich es unten geschrieben habe, ist der beabsichtigte/beste Weg, dies zu tun.Die beste Methode für die geschachtelte Filterung in dplyr

In SQL ich das tun:

library(sqldf) 
    library(gapminder) 


    sqldf(' 
    select * from gapminder 
    where country in (select country from gapminder where year > 2000 and lifeExp < 75) 
     and country in (select country from gapminder where year < 2000 and lifeExp > 75) 
    ') 

In dplyr ich es wie folgt tun:

gapminder %>% filter( year < 2000 & lifeExp > 75 ) %>% select(country) -> condition1 
gapminder %>% filter( year >= 2000 & lifeExp < 75 ) %>% select(country) -> condition2 

gapminder %>% filter(country %in% condition1$country, country %in% condition2$country) 

Antwort

5

Eine äquivalente dplyr Ausdruck in diesem Fall wäre

gapminder %>% 
    group_by(country) %>% 
    filter(any(year < 2000 & lifeExp > 75) & any(year >= 2000 & lifeExp < 75)) 

Hier sind wir Suche nach beiden Bedingungen in jedem gruppierten Land

Verwandte Themen