2

係数によって正規化された値で構成されるデータ フレームに列を追加しようとしています。

例えば:

'data.frame':   261 obs. of  3 variables:
 $ Area   : Factor w/ 29 levels "Antrim","Ards",..: 1 1 1 1 1 1 1 1 1 2 ...
 $ Year   : Factor w/ 9 levels "2002","2003",..: 1 2 3 4 5 6 7 8 9 1 ...
 $ Arrests: int  18 54 47 70 62 85 96 123 99 38 ... 

エリア別にグループで正規化された Arrests 値の列を追加したいと思います。

私が思いついた最高のものは次のとおりです。

data$Arrests.norm <- unlist(unname(by(data$Arrests,data$Area,function(x){ scale(x)[,1] } )))

このコマンドは処理されますが、データがスクランブルされます。つまり、正規化された値がデータ フレーム内の正しい領域に一致しません。

あなたのヒントに感謝します。

編集:スクランブルされたデータの意味を明確にするために、コードの後に​​データ フレームをサブセット化すると、正規化された値が明らかに別の因子グループに属している次のような出力が得られます。

      Area Year Arrests Arrests.norm
199 Larne 2002      92 -0.992843957
200 Larne 2003     124 -0.404975825
201 Larne 2004      89 -1.169204397
202 Larne 2005      94 -0.581336264
203 Larne 2006      98 -0.228615385
204 Larne 2007       8  0.006531868
205 Larne 2008      31  0.418039561
206 Larne 2009      25  0.947120880
207 Larne 2010      22  2.005283518
4

2 に答える 2