2013-11-21 26 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的均值。我寫了一個循環,但遇到了麻煩。我想返回一個包含網站,年份和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返回結果是

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

,其中10.4是x的平均對於所有df $ x的值(aka均值(df $ x))

我的循環出了什麼問題?或者,因爲這是一個示例數據集,可能實際上我的數據集有問題?只是爲了澄清...類(DF $ x)是 「數字」

感謝您的任何想法,
保羅

+2

另一個聚合問題似乎是:'聚合(x〜site + year,data = df,mean)' – thelatemail

+0

來吧,保羅。真的下次嘗試做一些搜索。 SO中有太多的意思分組問題,至少有一個問題很難錯過。並學習差異btwn「&&」和「&」。 –

+2

我想你的屁股交給你也是人們如何學習有時... – logicForPresident

回答

0

這樣做的一種流行的方式是通過使用plyr ...

require(plyr) 
ddply(df, .(site,year), summarize, xm=mean(x)) 
相關問題