11

各行が個人を表すデータフレームがあります。そのデータフレームには、年齢と年の2つの変数があります。年間平均年齢の表を作りたい。どうすればいいですか?

私が思いついた最高のものはでしたがxtabs(age ~ year, dataframe)、これは私に年間の年齢の合計を与えます。

4

4 に答える 4

19

使用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
于 2012-01-25T18:08:00.020 に答える
6

特にplyrパッケージを見てくださいddply

ddply(dataframe, .(year), summarise, mean(age))

xtabsを使用する必要がある場合は、上記の回答を参照してください。

于 2012-01-25T18:08:52.670 に答える
5

私はあなたのために解決策がうまくいくことをうれしく思い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))
于 2012-01-25T18:38:00.673 に答える
1

もう1つの解決策は、2つのxtabs関数を使用することです。最初の関数は年齢の合計を計算し、2番目の関数は各グループの人数を取得し、次に合計/人数で平均を取得します。

例:xtabs(年齢〜年、データフレーム)/ xtabs(〜年、データフレーム)

ただし、集計アプローチを使用して、データフレームに適用される中央値またはその他の関数を計算できます。間違いなくより柔軟です。

于 2017-06-01T01:00:44.100 に答える