2016-07-26 5 views
0

doBy RパッケージのscaleByを使用して、データセット内の各サブジェクトの条件で変数を標準化しています。データセットに約5137人の参加者があり、それぞれ約120の観測値があります。そのデータセットでは、scaleByは非常に遅い(15分に近い)。他の機能(summaryBy、melt、dcastなど)は、はるかに速く(20秒を超えない)機能します。私はscaleByのためのより速い簡単な選択肢があるかどうか疑問に思います。R:scaleByより速い代替手段

ここでは、参加者数、各参加者内の条件数(反復測定デザイン)、各参加者の各条件に対する観測数の観点から、自分のデータセットを模倣するために実行できるシミュレーションコードを示します:

nSubj <- 5137 
 
valuesPerSubj <- 120 
 
nobs <- nSubj*valuesPerSubj 
 
ttt <- data.frame(cond=rep(c('a','b','c','d'),nobs/4), rt=rnorm(nobs,mean=700,sd=150), subj=rep(seq(1:nSubj),valuesPerSubj)) 
 

 
start <- Sys.time() 
 
zt <- scaleBy(rt ~ subj+cond, data=ttt) 
 
end <- Sys.time() 
 
duration <- end-start 
 
duration

このコードでSCALEBYは(あなたがより速く、テストのために、上記のコードでnSubjを減らすことができます)11.7分、自分のコンピュータを取ります。 これより高速なソリューションはありますか?

答えて

0

もっと速いコードが見つかりました。このコードを実行するために以下の4秒を要した

gttt <- group_by(ttt,subj,cond) 
 
zt <- mutate(gttt,zrt=as.numeric(scale(rt)))

:私はこれらの2行のSCALEBYラインを置き換えます。

関連する問題