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. plyrdata.table汇总您的数据
  2. latticeggplot2按组绘制

例如使用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 回答