データフレームには、いくつかの値を持つベクトルと、各値が属するカテゴリのベクトルがあります。「カテゴリごと」に動作する関数を値に適用したいので、tapplyを使用します。たとえば、私の場合、各カテゴリ内の値を再スケーリングしたいと考えています。
ただし、tapply の結果は再スケーリングされた値のベクトルのリストですが、このリストを統合 (または「線形化」) する必要があるため、再スケーリングされた値の列をデータ フレームに追加できます。
私はそれを行う簡単な方法を探しています。ここにサンプルがあります:
x = 1:10
c = factor(c(1,2,1,2,1,2,1,2,1,2))
#I do the rescaling like this:
rescaled = tapply(x,list(c),function(x) as.vector(scale(x)))
# this look like this:
$`1`
[1] -1.2649111 -0.6324555 0.0000000 0.6324555 1.2649111
$`2`
[1] -1.2649111 -0.6324555 0.0000000 0.6324555 1.2649111
# but really, I need to get something like this
[1] -1.2649111 -1.2649111 -0.6324555 -0.6324555 0.0000000 0.0000000
[7] 0.6324555 0.6324555 1.2649111 1.2649111
助言がありますか?
ありがとう、アミット