【问题标题】:How do I exclude values within a range in dplyr?如何排除 dplyr 范围内的值?
【发布时间】:2020-10-13 23:57:47
【问题描述】:

如果我想选择一个变量在 1000-2000 范围内的观察值,我会这样做:

filteredData <- unfilteredData%>% filter(variable %in% (1000:2000))

但是如何排除 1000-2000 范围内的变量?我只想要那些 2000

【问题讨论】:

  • filter(!(variable %in% (1000:2000))) 是一种方式,但这可能并不理想。你可以做两个过滤器,2000
  • 根据我的经验,您甚至不需要额外的括号。然而,有些人发现它们有助于易读性。
  • !between(variable, 1000, 2000) 是单个过滤器中另一种简单的 dplyr 方式。

标签: r dplyr filtering


【解决方案1】:

我认为variable 前面的感叹号可以解决问题。

filteredData <- unfilteredData %>% filter(!variable %in% (1000:2000))

这只是“范围内不可变”。

或者,正如亚当指出的那样

filteredData <- unfilteredData %>%
         filter(variable < 1000) %>%
         filter(variable > 2000) 

也是一种可行的方法。通往罗马的道路有多种方式!

【讨论】:

  • 这是我的第一直觉,但这不是“不在范围内”。它实际上是“不在c(1000, 1001, 1002, ..., 2000)”,这可能不是很有效。
【解决方案2】:

以 mtcars 为例:

> mtcars %>% filter(!(hp %in% (100:200)))
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
> 

我们排除了马力在 100 到 200 之间的车辆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多