以下两个代码块都可以工作,但我感兴趣的是第二个代码块(使用dplyr)是否可以一次性使用管道完成?或者我在下面写的方式是预期的/最好的方法。
在SQL中我这样做:
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 )
')
在dplyr中,我这样做:
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 )
答案 0 :(得分:6)
在这种情况下,等效的dplyr表达式将是
gapminder %>%
group_by(country) %>%
filter(any(year < 2000 & lifeExp > 75) & any(year >= 2000 & lifeExp < 75))
在这里,我们搜索每个分组国家/地区内的两种情况