通过取平均值组合因子水平

  • 本文关键字:水平 组合 平均值 r
  • 更新时间 :
  • 英文 :


这里是新手。

我有一个数据集;年份";(2014-2019(,";SITE";(7个站点(;TRANSECT";(上游、下游(,以及包含个体计数的大约50个昆虫物种列。我想平均每年和每个地点的上游和下游样本。最终目标是具有列"的数据集;YEAR"SITE";,以及包含上游和下游计数的平均值的50种昆虫列。我试过几种方法来做到这一点,但都没有成功。以下代码是我最后尝试过的代码。

INS_YxS<-aggregate(INV.MEANS[5:54], INV.MEANS[1:3], mean)

此数据集中的第1-4列为X、YEAR、SITE和TRANSECT。5-54为昆虫种类。

得到的数据集似乎有正确的列,但看起来它只是删除了TRANSECT列,而没有对上游和下游物种计数进行平均。。。有人知道如何完成我想要做的事情吗?

以下是我的数据外观的可视化表示(表1(和我希望它的外观(表2(:https://i.stack.imgur.com/WkX4e.png

请注意,在2中没有TRANSECT列,昆虫列中的新值是每个YEAR SITE的上游和下游TRANSECT行的平均值,导致行数减少。

抱歉,我正在努力寻找最好的方式来解释我想做什么…

我知道答案就在那里,取决于我问的是正确的问题。。。

谢谢!!!

考虑aggregate的公式版本,使用点表示法:

INSECTS_MEANS <- aggregate(
. ~ YEAR + SITE + TRANSECT,
data=INSECTS_COUNTS, 
FUN=mean, na.rm=TRUE, 
na.action=na.omit
)

否则,您需要将列表传递到by参数中:

INSECTS_MEANS <- aggregate(
x = INSECTS_COUNTS[5:ncol(INSECTS_COUNTS)],
by = list(
YEAR = INSECTS_COUNTS$YEAR,
SITE = INSECTS_COUNTS$SITE,
TRANSECT = INSECTS_COUNTS$TRANSECT
), 
FUN=mean, na.rm=TRUE, 
na.action=na.omit
)

最新更新