R中变量组合的极值

R中变量组合的极值,r,outliers,R,Outliers,我有一个如下的数据集。现在我的问题是多方面的。对于客户端、任务和子任务的每个组合,我想排除前10%的极值。我想要两个数据集,一个是所有组合的极值,另一个是所有组合的正常值 client task subtask time a abc t1 12 a abc t2 23 b xyz t3 334 c ijk t1 1 c ijk t1 12 b xyz t1 12 a xyz t2 23 b ijk t3 24 a ijk t2 344

我有一个如下的数据集。现在我的问题是多方面的。对于客户端、任务和子任务的每个组合,我想排除前10%的极值。我想要两个数据集,一个是所有组合的极值,另一个是所有组合的正常值

client  task    subtask time
a   abc t1  12
a   abc t2  23
b   xyz t3  334
c   ijk t1  1
c   ijk t1  12
b   xyz t1  12
a   xyz t2  23
b   ijk t3  24
a   ijk t2  344
c   xyz t3  34343
b   ijk t2  34
c   xyz t3  34
a   xyz t1  23
c   ijk t1  223
a   ijk t1  23
b   xyz t3  21
b   ijk t1  45
a   xyz t2  23
c   ijk t3  45
您可以使用分位数查找10%的最高值:

DF <- within(DF,
             extreme <- ave(time, #your values
                            client, task, subtask, #grouping factors
                            FUN = function(x) x > quantile(x, 0.9)))
然后使用子集来提取所需的值。

您还可以使用dplyr包来加速此过程

DF %>% 
  group_by(client, task, subtask) %>% 
  mutate(extreme = time > quantile(time, .9))