R:一侧截断平均值

时间:2016-04-07 15:58:43

标签: r

我是R和这个论坛的新手,很抱歉这些愚蠢的问题。

我有一组反应时间数据(每个参与者约200个响应),但在计算平均值之前,我想将每个参与者的10%最慢响应定义为异常值并将其删除。

例如:如果我有20个值,我想切断它们中最慢的2个(= 10%)......

我觉得在R中应该有一个简单的方法,但我不知道如何开始。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用分位数来帮助解决这个问题。例如:

data <- c(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10)

mean(data)
> 5.5

#Restrict to data that is above 10th percentile
mean(data[data > quantile(data, .10)]) 
> 6

答案 1 :(得分:0)

@Sam: 我的问题如下......如果我们有一个类似下面的数据框。我想切断每个参与者最慢的10%,对于subject_no 1为“11”,对于subject_no 2为“7” 问题是:在使用你建议的分位数函数时,如何考虑主题?

[subject.no] [response.time] 

[1,]    1    11    
[2,]    1    0    
[3,]    1    9    
[4,]    1    9   
[5,]    2    7    
[6,]    2    0    
[7,]    2    3    
[8,]    2    3