这里是新手。
我有一个数据集;年份";(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
)