2

我正在尝试在因子(主题)的每个级别上应用winsor函数,以消除极端情况。我可以将 winsor 函数应用于整个列,但想在主题内进行。

Subject RT
1       402
1       422
1       155
1       460
2       283
2       224
2       346
2       447
3       415
3       161
3       1
3       343

理想情况下,我希望输出是一个向量,其中包含与输入相同的行数,但要根据 winsor 函数删除和替换异常值(例如主题 3 的倒数第二个值)。

4

2 回答 2

1

you are looking for the ?by function

 #  for example: 
 by(myDF, myDF$Subject, winsor(myDF$RT))

However, using data.table (instead of data.frame) might be better suited for you

### broken down step by step: 

library(data.table)
myDT <- data.table(myDF)

myDT[, winsorResult := winsor(RT), by=Subject]
于 2013-03-14T20:50:47.743 回答
0
 library(psych)
 transform(dat,win = ave(RT,Subject,FUN=winsor))
   Subject  RT   win
1        1 402 402.0
2        1 422 422.0
3        1 155 303.2
4        1 460 437.2
5        2 283 283.0
6        2 224 259.4
7        2 346 346.0
8        2 447 386.4
9        3 415 371.8
10       3 161 161.0
11       3   1  97.0
12       3 343 343.0
于 2013-03-14T20:29:08.517 回答