【发布时间】:2016-07-28 11:27:38
【问题描述】:
我有反应时间数据,我正试图去除异常值。我的目标是计算每个条件下每个参与者的标准偏差,并删除高于平均值 2 个 SD 的值。
我的 data.frame data_vfin 看起来像这样。每个参与者有四个条件和每个条件六个观察结果。
participant condition rt
1435157254 I_A 728
1435157254 A_A 752
1435157254 A_S 2771
1435157254 I_S 673
1435157254 I_A 1749
1435157254 A_A 1215
1435157254 A_S 681
1435157254 I_S 488
1435157254 I_A 464
1435157254 A_A 525
1435157254 A_S 517
1435157254 I_S 426
1435157254 I_A 431
1435157254 A_A 453
1435157254 A_S 522
1435157254 I_S 421
1435157254 I_A 432
1435157254 A_A 493
1435157254 A_S 377
1435157254 I_S 425
1435157254 I_A 356
1435157254 A_A 486
1435157254 A_S 369
1435157254 I_S 381
1435157283 A_A 3088
1435157283 I_S 568
1435157283 A_S 488
1435157283 I_A 432
1435157283 A_A 536
1435157283 I_S 456
1435157283 A_S 440
1435157283 I_A 456
1435157283 A_A 1192
1435157283 I_S 344
1435157283 A_S 432
1435157283 I_A 456
1435157283 A_A 449
1435157283 I_S 440
1435157283 A_S 592
1435157283 I_A 448
1435157283 A_A 1136
1435157283 I_S 448
1435157283 A_S 384
1435157283 I_A 472
1435157283 A_A 432
1435157283 I_S 624
1435157283 A_S 464
我已经能够使用以下代码按参与者或条件进行修剪:
data_trimmed <- do.call(rbind,by(data_vfin,data_vfin$participant, function(x) x[!abs(scale(x$rt)) > 2,] ))
但是,我不知道如何同时针对每个参与者的每个条件执行此操作。我对使用 R 很陌生,所以任何帮助都会非常受欢迎。
P.S.:我尝试使用为这个精确操作制作的 trimr 包,但是当我尝试修剪每个参与者的每个条件并选择“原始”作为返回类型时,它返回一个空的 data.frame。
【问题讨论】:
-
使用您提供的数据按参与者和条件进行分组会导致每个组的
rt列只有 1 个值。当取一行的标准差时,你总是会得到NA。如果数据恰好超过您在此处显示的数据,请在此处添加更多行。 -
每个参与者的每个条件有六个观察值。我已经编辑了我的帖子以反映这一点。
标签: r