Rのave()
関数は、その名前よりも便利です - 基本的にtapply()
のバージョンで、入力と同じ長さのベクトルを返し、それらの値を入力と同じ順序に戻します。一致したいくつかの他のplyr
技術がありplyrの 'ave'のアナログ?
> x <- 1:10
> val <- ddply(data.frame(x=x, id=1:10), .(x %% 2),
function(d) {d$y <- d$x-mean(d$x); d})
> val[order(val$id),]$y
[1] -4 -4 -2 -2 0 0 2 2 4 4
:
> x <- 1:10
> ave(x, x %% 2, FUN=function(d) d-mean(d))
[1] -4 -4 -2 -2 0 0 2 2 4 4
あなたはddply()
と同様の効果を得ることができますが、それは夫婦データの余分なコピーだけでなく、カップルの補助変数が必要です私はave()
で得ることができる軽量なアプローチ?
はい、 'ave'のplyrに相当するのは' ave'です;)Plyrは根本的に単一のベクトルより大きなオブジェクトを扱うことに基づいています。 – hadley