【发布时间】:2021-02-26 02:13:13
【问题描述】:
我正在处理两组数据。第一个数据集是我从中进行测量的一组个体标本,另一个是以前研究中给定物种种群的一组报告的平均测量值。第一个数据集如下所示:
data.frame(Species = c('Species1', "Species1", 'Species1', 'Species2', 'Species3', 'Species3'),
Specimen = c('A1', 'B2', 'C3', 'D4', 'E5', 'F6'),
Measurement1 = c(100, 110, 120, 130, 140,150),
Measurement2 = c(1, 2, 3, 4, 5, 6))
另一个看起来像这样:
data.frame(Species = c('Species1','Species1', 'Species2', 'Species3'),
N = c(10, 10, 11, 12),
Measurement1 = c(100, 100, 110, 120),
Measurement2 = c(1, 2, 3, 4))
我想做的是找到一种有效的方法来重新计算给定物种的平均值,给定该物种的所有观察结果。在上面给出的示例中,结果将如下所示:
data.frame(Species=c('Species1','Species2','Species3'),
N=c(23,12,14),
Measurement1=c(101.3043,111.67,123.5714),
Measurement2=c(1.565,3,4.214))
我知道aggregate() 将计算给定数据框的平均值,但我不知道有什么简单的方法可以重新计算几个求和平均值的平均值,或者如果条目数量不同,该怎么做.我知道可以使用公式手动重新计算平均值
(Xx*Nx)+(Xy*Ny)+(Xc*Nc) /(Nx+Ny+Nc)
但我不知道如何在 R 中以这样的方式编写它,以便可以使用由分组因子指定的不同数量的条目来完成。
【问题讨论】:
-
您的数据似乎有问题。 (括号在错误的地方关闭。)。你能说明你是如何计算共享数据的吗?你如何在输出中得到
101.3043为Measurement1,N23 又是怎样的? -
我修正了编码。对于计算,我一直在 Excel 中手工完成,这就是为什么我想尝试寻找机器学习解决方案的原因。我得到 101.3043 因为有 23 个观察值(第一帧中的 3 个,第二组中的 20 个,每组 10 个),所以我得到 ((10*100)+(10*100)+(100+110+120) )/23.
标签: r machine-learning mean summary