2

折れ線グラフにグループごとの加重平均をプロットする簡単な方法を探しています (各線は国を表します。以下に例を示します)。

私のデータには、国にネストされた個人と年にネストされた国という階層構造がありますが、すべての国が毎年調査を行っているわけではありません。私のデータに似た最小限のデータフレームを作成しようとする私の試みは次のとおりです。

dat <- data.frame(country=rep(LETTERS, each=3)[1:20], replicate(3, sample(11, 10)), year=sample(c(1990:2000), 100, TRUE),wght=sample(c(1:3), 100, TRUE))

次のコードを使用して国年ごとに weighted.means を計算し、それをマトリックスとして保存しました。

mat1<-by(dat,list(dat$country,dat$year), function(x)with(x,weighted.mean(x$X1,x$wght)))[]

しかし、これは私がどこまで到達できるかです。誰かがこのマトリックスから国別の年ごとの加重平均をプロットするのを手伝ってくれますか、またはグループごとに加重平均をプロットする別の方法を提供してもらえますか?

完全に明確にするために、これが私のグラフを次のようにする必要がある方法です。

国別加重平均

4

1 に答える 1

3

使用する :

  1. plyrまたはdata.tableあなたのデータを集約する
  2. latticeまたはggplot2グループごとにプロットする

plyr/を使用した例lattice:

library(plyr)
mat.mean <- ddply(dat,.(country,year),summarise, value=weighted.mean(X1,wght))
library(lattice)
xyplot(value~year,groups=country,
       type='l',data=mat.mean,
       auto.key =list(columns = 3))

ここに画像の説明を入力

于 2013-11-05T01:32:16.073 に答える