在 R 中:如何计算一个向量内由另一个向量指定的不同元素的平均值?

In R: How do I calculate the averages within a vector over different elements specified by another vector?

假设我们有 2 个向量:

x <- c(1,2,2,2,2,2,3,3,4,3,4,3,4,5,5)
y <- c(40,228,280,252,211,226,235,240,179,175,197,203,227,258,240)

现在我想将y中与x中的值对应的元素相加,然后除以x中出现的次数来存储:

40, 239.4, 213.25, 201, 249

例如(228 + 280 + 252 + 211 + 226)/5 = 239.4

如果有人能帮助我,我将不胜感激。

base R 解决方案可以帮助您 tapply():

tapply(y,x, mean)

输出:

   1      2      3      4      5 
 40.00 239.40 213.25 201.00 249.00 

如果您想将结果保存在另一个向量中,您可以使用 z <- as.vector(tapply(y, x, mean))