选择基于数据的多个过滤器的子集

时间:2019-03-02 18:03:20

标签: r dplyr filtering

我正在尝试获取更大的Movies数据框的子集,我想选择所有来自美国且年份在2个日期之间的电影。

我写了这句话:

usMoviesInRange <- movies %>% filter(country == "USA") %>% between(year, 1986, 2016)

但我收到一个错误提示,

  

介于(。,year,1986,2016)之间的错误:未使用的参数(2016)

有人可以帮助我了解这里发生的事情或我做错了什么吗?

3 个答案:

答案 0 :(得分:4)

您没有正确使用between(x, left, right)

尝试

library(tidyverse)
movies <- tibble(country = c("USA", "France", "USA", "USA", "USA"),
                 year =    c( 2000,     1995,  1935,  2019,  1990))
usMoviesInRange <- movies %>% 
  filter(country == "USA") %>% 
  filter(year %>% 
           between(1986, 2016)
        )
usMoviesInRange

给予

# A tibble: 2 x 2
  country  year
  <chr>   <dbl>
1 USA      2000
2 USA      1990

答案 1 :(得分:1)

我强烈建议您使用此选项,您可以在dplyr::filter上添加多个参数

usMoviesInRange = movies %>% 
    filter(country %in% "USA", 
           year > 1986, 
           year < 2016)

如果您使用dplyr::between,则必须以这种方式使用:

country[between(x = country$year, left = 1986,right =  2016),]

希望有帮助,

答案 2 :(得分:1)

between命令用于代替>=<=例如

usMoviesInRange <- movies %>% filter(country == "USA") %>% filter(year>=1986 &<=2016)

可以改写为

usMoviesInRange <- movies %>% filter(country == "USA") %>% filter(between(year, 1986, 2016))