2013-11-05 3 views
2

나는 꺾은 선 차트 (각 줄은 국가를 대표하는, 아래에 제공된 예제)에서 그룹별로 가중 평균을 플롯하는 간단한 방법을 찾고 있습니다.그룹별로 가중 평균을 구하는 방법은 무엇입니까?

내 데이터는 여러 국가에서 중첩 된 개인이지만 모든 국가에서 매년 조사가 이루어지는 계층 구조가 아닙니다. 나는 다음과 같은 코드로 국가 연도 별 weighted.means을 계산하기 위해 관리하고 내가 매트릭스로 저장

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

답변

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

enter image description here

관련 문제