2017-10-04 216 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