group_by后R使用哪个函数

R using which function after group_by

我有一个包含四个变量 (a,b,c,d) 的数据集。我想按 a、b、c 对数据进行分组,然后找出 d 的离群值。

示例数据如下:https://www.dropbox.com/s/ftp4eehqxzh7nn3/example.csv?dl=0

我试过了:

outliers = data %>%
           group_by(a,b,c) %>%
           which (data$d > quantile (data$d, na.rm=T)[4] + 1.5*IQR(data$d, na.rm = T) | data$d < quantile (data$d, na.rm=T)[2] - 1.5*IQR(data$d, na.rm = T).

但是,我收到错误 argument to 'which' is not logical

如果有人能告诉我我做错了什么以及我应该如何解决这个问题,我将不胜感激。

你可以使用

library(dplyr)

data %>%
  group_by(a,b,c) %>%
  filter(
    d > quantile(d, na.rm = TRUE)[4] + 1.5 * IQR(d, na.rm = TRUE) | 
      d < quantile(d, na.rm = TRUE)[4] - 1.5 * IQR(d, na.rm = TRUE))

这个returns你

# A tibble: 2,464 x 5
    ...1 a         d b         c
   <dbl> <chr> <dbl> <chr> <dbl>
 1 10533 gas   321.  CAISO  2011
 2 10534 gas    51.8 CAISO  2012
 3 15067 gas    52.6 CAISO  2013
 4 25890 oil    51.0 ISONE  2010
 5 26485 gas   416.  PJM    2008
 6 26489 gas   468.  PJM    2012
 7 38153 gas   Inf   SPP    2014
 8 38154 gas   Inf   SPP    2015
 9 38155 gas    67.4 SPP    2016
10 38156 gas    58.8 SPP    2017
# ... with 2,454 more rows