2013-11-21 2 views
1

의 데이터 프레임에서 각 사이트와 연도를 의미합니다. 따라서 사이트, 연도 및 측정 된 변수 (x)를 포함하는 데이터 세트가 있습니다. x는 일년 내내, 수년에 걸쳐 여러 사이트에서 여러 번 측정됩니다. 다음은 내 데이터 세트의 예입니다 (각 x는 다른 날짜에 수집되었습니다. 연중 평균에 관심이 많아서 날짜를 추출했습니다). 데이터 세트 df :값을 계산하는 것은 R

>df 

site year x 
    a 2000 10 
    a 2000 12 
    a 2000 13 
    b 2000 14 
    b 2000 15 
    b 2000 17 
    c 2000 9 
    c 2000 11 
    c 2000 11 
    a 2001 11 
    a 2001 12 
    a 2001 12 
    b 2001 13 
... 

으로 전화를 걸어 여러 해 간다.

각 사이트 및 연도에 대한 x의 평균을 추출하고 싶습니다. for 루프를 작성했지만 문제가 있습니다. x에 대한 사이트, 연도 및 평균이있는 데이터 프레임을 반환하고 싶지만 df $ x에서 첫 번째 값으로 찾은 모든 변수의 평균을 취한 다음 나머지 결과에 대해 NaN을 반환합니다.

temp <- NULL; 
mn.x <- NULL; 
a <- NULL; 
for(i in unique(df$site)) { 
for (j in unique(df$year)) { 
    site <- i; 
    year <- j; 
    a <- data.frame(site, year); 
    temp <- mean(na.omit(df$x[df$site==i && df$year==j])) 
    site.year <- data.frame(a, temp) 
     mn.x <- rbind(temp, site.year) 
    } 
} 

그냥 명확하게하는 ... 내가 R에 mn.x 입력 할 때 반환 결과는 10.4 x의 평균입니다

>mn.x 
[1] 10.4 
[1] NaN 
[1] NaN 
[1] NaN 
[1] NaN 
... 

입니다 : 여기

내 코드입니다 df $ x (일명 평균 (df $ x))의 모든 값에 대해

내 루프에 어떤 문제가 있습니까? 또는 이것이 예제 데이터 세트이므로 실제로 내 데이터 세트에 문제가 있습니까? 그냥 명확하게 ... 클래스 (안양 $ x를) 폴

어떤 생각에 대한

감사합니다,
"숫자"입니다이 일을하는 인기있는 방법은 plyr을 사용하는 것입니다

+2

또 다른 집계 질문 : '집계 (x ~ 사이트 + 연도, 데이터 = df, 평균)' – thelatemail

+0

폴. 다음 번에 몇 가지 검색을 시도하십시오. 너무 많은 사람들이 그룹별로 질문을하므로 적어도 하나는 놓치기가 어렵습니다. 그리고 btwn "&&"와 "&"의 차이를 배우십시오. –

+2

나는 네 엉덩이를 건네주는 것이 가끔 배우는 법이라고 생각해. – logicForPresident

답변

0

...

require(plyr) 
ddply(df, .(site,year), summarize, xm=mean(x)) 
관련 문제