0

次のデータ フレームがあります (これはデータ フレームの先頭のみです)。ID列は件名です(データフレームには、件名#99だけでなく、より多くの件名があります)。z.score (絶対値) が 1 より小さい観測に対してのみ、「対象」と「条件」による平均「rt」を計算したいと考えています。

> b
  subject   rt ac condition     z.score
1      99 1253  1     200_9  1.20862682
2      99 1895  1     102_2  2.95813507
3      99 1049  1      68_1  1.16862102
4      99 1732  1      68_9  2.94415384
5      99  765  1      34_9 -0.63991180
7      99 1016  1      68_2 -0.03191493

データをサブセット化した後、tapply または dcast (reshape2 から) を使用して実行できることはわかっています。

b1 <- サブセット(b, abs(z.score) < 1)

b2 <- dcast(b1, subject~condition, mean, value.var = "rt")

  subject      34_1      34_2      34_9      68_1      68_2     68_9     102_1     102_2    102_9     200_1     200_2    200_9
1      99 1028.5714  957.5385  861.6818  837.0000  969.7222 856.4000  912.5556  977.7273 858.7800 1006.0000 1015.3684 913.2449
2    5203  957.8889  815.2500  845.7750  933.0000  893.0000 883.0435  926.0000  879.2778 813.7308  804.2857  803.8125 843.7200
3    5205 1456.3333 1008.4286  850.7170 1142.4444  910.4706 998.4667  935.2500  980.9167 897.4681 1040.8000  838.7917 819.9710
4    5306 1022.2000  940.5882  904.6562 1525.0000 1216.0000 929.5167  955.8571  981.7500 902.8913  997.6000  924.6818 883.4583
5    5307 1396.1250 1217.1111 1044.4038 1055.5000 1115.6000 980.5833 1003.5714 1482.8571 941.4490 1091.5556 1125.2143 989.4918
6    5308  659.8571  904.2857  966.7755  960.9091 1048.6000 904.5082  836.2000 1753.6667 926.0400  870.2222 1066.6667 930.7500

上記の b1 の例では、各被験者がサブセットの要求を満たす観測値を持っていました。ただし、特定のサブジェクトについては、サブセット化した後に観測値が得られない場合があります。この場合、サブセットの要求を満たす観測値がない特定の条件で、その被験者の b2 で NA を取得したいと考えています。誰かがそれを行う方法のアイデアを持っていますか? どんな助けでも大歓迎です。

ベスト、アヤラ

4

2 に答える 2

2

この状況で使用できるというdrop議論がありますが、因数に変換する必要があります。dcastsubject

z.scoreこれは、絶対値が 1 未満であるという条件に一致する値を持たない 2 番目のサブジェクト ID を持つデータセットです。

library(reshape2)

bb = data.frame(subject=c(99,99,99,99,99,11,11,11), rt=c(100,150,2,4,10,15,1,2), 
             ac=rep(1,8), condition=c("A","A","B","D","C","C","D","D"),
             z.score=c(0.2,0.3,0.2,0.3,.2,2,2,2))

これを でワイドフォーマットに変形すると、引数dcastがあってもサブジェクト番号 11 が失われます。drop

dcast(subset(bb, abs(z.score) < 1), subject ~ condition, fun = mean, 
     value.var = "rt", drop = FALSE)

  subject   A B  C D
1      99 125 2 10 4

subject要因を作ります。

bb$subject = factor(bb$subject)

これで、すべてのサブジェクトを幅広いデータセットに保持dcastできます。drop = FALSE

dcast(subset(bb, abs(z.score) < 1), subject ~ condition, fun = mean, 
     value.var = "rt", drop = FALSE) 

  subject   A   B   C   D
1      11 NaN NaN NaN NaN
2      99 125   2  10   4

NA代わりに取得するには、引数NaNを使用できます。fill

dcast(subset(bb, abs(z.score) < 1), subject ~ condition, fun = mean, 
     value.var = "rt", drop = FALSE, fill = as.numeric(NA)) 

  subject   A  B  C  D
1      11  NA NA NA NA
2      99 125  2 10  4
于 2014-11-26T16:48:39.947 に答える
0

あなたが求めているのは次のことですか?同様のデータセット「bb」を作成しました

library("plyr")  ###needed for . function below
bb<- data.frame(subject=c(99,99,99,99,99,11,11,11),rt=c(100,150,2,4,10,15,1,2), ac=rep(1,8) ,condition=c("A","A","B","D","C","C","D","D"),     z.score=c(0.2,0.3,0.2,0.3,1.5,-0.3,0.8,0.7))

bb  
  subject  rt ac condition z.score
#1      99 100  1         A     0.2
#2      99 150  1         A     0.3
#3      99   2  1         B     0.2
#4      99   4  1         D     0.3
#5      99  10  1         C     1.5
#6      11  15  1         C    -0.3
#7      11   1  1         D     0.8
#8      11   2  1         D     0.7

次に、サブセットを含めて dcast を呼び出します。

cc<-dcast(bb,subject~condition, mean, value.var = "rt",subset = .(abs(z.score)<1))  
cc  
   subject   A   B   C   D 
#1      11 NaN NaN  15 1.5
#2      99 125   2 NaN 4.0
于 2014-11-26T15:44:25.843 に答える