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

理想的には、出力が入力と同じ行数を含むベクトルであるが、外れ値 (例: サブジェクト 3 の最後から 2 番目の値) が取り除かれ、winsor 関数に従って置き換えられるようにしたいと考えています。

4

2 に答える 2

1

?byあなたは機能を探しています

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

ただし、data.table(の代わりにdata.frame)を使用する方が適している場合があります

### 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 に答える