我是R和这个论坛的新手,很抱歉这些愚蠢的问题。
我有一组反应时间数据(每个参与者约200个响应),但在计算平均值之前,我想将每个参与者的10%最慢响应定义为异常值并将其删除。
例如:如果我有20个值,我想切断它们中最慢的2个(= 10%)......
我觉得在R中应该有一个简单的方法,但我不知道如何开始。
提前致谢!
答案 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