我正在寻找一种直接的方法来绘制折线图上的加权平均值(每行代表一个国家,下面提供的示例)。
我的数据具有层次结构,其中个体嵌套在多年的国家和国家中,但并非所有国家/地区都在每年都进行调查。这是我尝试创建一个类似于我的数据的最小数据框架:
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)))[]
但这是我能走得多远。有人可以帮助我根据该矩阵绘制国家/地区的加权平均值,或者提供另一种按群组绘制加权平均值的方法吗?
非常清楚,这就是我需要我的图形的样子:
答案 0 :(得分:3)
使用:
plyr
或data.table
汇总您的数据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))