R中变量组合的极值

时间:2015-01-15 09:27:10

标签: r outliers

我有一个如下数据集。现在我的问题很多了。对于客户端,任务和子任务的每个组合,我想排除前10%的极值。我希望输出2个数据集,一个具有所有组合的极值,另一个是所有组合的正常值。

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

2 个答案:

答案 0 :(得分:2)

您可以使用quantile查找10%的最高值:

DF <- within(DF,
             extreme <- ave(time, #your values
                            client, task, subtask, #grouping factors
                            FUN = function(x) x > quantile(x, 0.9)))

然后使用子集来提取所需的值。

答案 1 :(得分:0)

您还可以使用dplyr包来加快速度。

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