各行が個人を表すデータフレームがあります。そのデータフレームには、年齢と年の2つの変数があります。年間平均年齢の表を作りたい。どうすればいいですか?
私が思いついた最高のものはでしたがxtabs(age ~ year, dataframe)
、これは私に年間の年齢の合計を与えます。
使用aggregate
:
xtabs(hp~cyl+gear,aggregate(hp~cyl+gear,mtcars,mean))
gear
cyl 3 4 5
4 97.0000 76.0000 102.0000
6 107.5000 116.5000 175.0000
8 194.1667 0.0000 299.5000
特にplyrパッケージを見てくださいddply
ddply(dataframe, .(year), summarise, mean(age))
xtabsを使用する必要がある場合は、上記の回答を参照してください。
私はあなたのために解決策がうまくいくことをうれしく思いxtabs
ます。干渉する(そしてエラーが発生する)パッケージをロードする必要があります。別の解決策は次のとおりです。
tapply(dfrm$age, dfrm$year, FUN=mean)
テーブル(配列)に追加の次元を取得するには、フォームの2番目のINDEX引数に追加の要素を追加し続けlist(fac1, fac2, fac3)
ます。
mtcarsを使用した例に適用:
tapply(mtcars$hp, list(mtcars$cyl,mtcars$gear), mean)
3 4 5
4 97.0000 76.0 102.0
6 107.5000 116.5 175.0
8 194.1667 NA 299.5
またはさらにコンパクトに:
with(mtcars, tapply(hp, list(cyl, gear), mean))
もう1つの解決策は、2つのxtabs関数を使用することです。最初の関数は年齢の合計を計算し、2番目の関数は各グループの人数を取得し、次に合計/人数で平均を取得します。
例:xtabs(年齢〜年、データフレーム)/ xtabs(〜年、データフレーム)
ただし、集計アプローチを使用して、データフレームに適用される中央値またはその他の関数を計算できます。間違いなくより柔軟です。