R - 来自不同组的数据集 - 根据组阈值删除值

时间:2016-02-29 19:15:58

标签: r

我的问题很简单。我们假设我有一个这样的数据集:

'data.frame':   1200 obs. of  2 variables:
 $ Subject  : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ RT       : int  729 485 555 556 583 491 439 355 587 499 ...

RT代表反应时间。我想过滤出高于/低于平均值+/- 2 S.D.的RT,但我需要为每个主题计算平均值和SD,并分别对每个主题的数据应用过滤器。我想我可以简单地对我的数据集进行子集化,进行操作,然后连接数据以将所有主题放在一起,但我想知道是否会有更有效的方法来实现它。

1 个答案:

答案 0 :(得分:0)

我们可以使用data.table

library(data.table)
setDT(df2)[, .SD[RT <= (mean(RT)+2*sd(RT)) &
      RT >= (mean(RT)-2*sd(RT)) ], by=Subject]