2017-10-04 153 views
0

我是R新手,所以我的頭銜甚至沒有意義。基本上,我有這個數據集,這是在2個不同的網站收集的昆蟲的長度。當我使用'彙總'功能時,我得到了兩個站點的值,並且我想計算每個站點的平均值:如何計算子集的平均值?

> ls() 
[1] "simulies" 
> ls.str() 
simulies : 'data.frame':  615 obs. of 2 variables: 
$ Site : Factor w/ 2 levels "Lovering","Orford": 2 2 2 2 2 2 2 2 2 2 ... 
$ Length: num 4.1 2.8 2.2 3.2 3.2 3.1 3.1 4.1 4.1 3.2 ... 
> summary(simulies) 
    Site   Length  
Lovering:398 Min. :0.600 
Orford :217 1st Qu.:1.300 
       Median :1.600 
       Mean :2.034 
       3rd Qu.:2.700 
       Max. :5.000 
+0

只需使用基礎R可以使用tapply功能: 'tapply(simulies,simulies $ Site,FUN = mean)' – Dave2e

+0

那麼,在基地將是'tapply(simulies $ Length,simulies $ Site,FUN = mean)'。本,我看到你編輯了你的問題 - 你是否難以將你的答案應用到你自己的案例中?還是你很好? – Gregor

+0

是的,我試圖提到重複,它也沒有工作。不過,我在下面的評論中得到了一些幫助,我錯過了「網站」中的大寫字母S. – Ben

回答

0

有很多不同的選項。其中兩個:

要獲得一個站點平均:

mean(simulies$Length[simulies$Site=="Lovering"]) 

或者用ddply得到輸出爲這兩個網站:

library(plyr) 
ddply(simulies, .(Site), summarize, Mean=mean(Length)) 
+0

對於第一個選項,我得到[1] NaN – Ben

+0

我更新了我的答案,因爲我注意到Site應該有一個大寫字母。它現在應該工作。 – user3640617

+0

現在,它的工作!謝謝。 – Ben