如何按群体绘制加权平均值?

时间:2013-11-05 01:15:36

标签: r matrix plot

我正在寻找一种直接的方法来绘制折线图上的加权平均值(每行代表一个国家,下面提供的示例)。

我的数据具有层次结构,其中个体嵌套在多年的国家和国家中,但并非所有国家/地区都在每年都进行调查。这是我尝试创建一个类似于我的数据的最小数据框架:

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))

我设法使用以下代码按国家/年计算加权。我将其保存为矩阵:

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

但这是我能走得多远。有人可以帮助我根据该矩阵绘制国家/地区的加权平均值,或者提供另一种按群组绘制加权平均值的方法吗?

非常清楚,这就是我需要我的图形的样子:

Weighted average by country

1 个答案:

答案 0 :(得分:3)

使用:

  1. plyrdata.table汇总您的数据
  2. latticeggplot2按小组绘制
  3. 例如,使用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))
    

    enter image description here

相关问题