r - 取矩阵 r 中行的平均值

标签 r matrix row mean

我有以下深度和温度数据矩阵(855 行,2 列),并且想取每列中每 3 行的平均值。例如:

 [1,]  -6.7 18.91
 [2,]  -5.4 18.91
 [3,]  -4.0 18.59
 [4,]  -6.7 20.37
 [5,]  -6.7 20.05
 [6,]  -2.7 20.21
 [7,]  -4.0 21.03
 [8,]  -5.4 20.70
 [9,]  -4.0 20.87
[10,]  -2.7 21.37
[11,]  -2.7 21.37
[12,]  -2.7 21.37

mean(data[1:3,1])
mean(data[4:6,1])

对于整个矩阵。如何在不手动编写每 3 行平均值的代码的情况下完成此操作?非常感谢任何想法或建议。

最佳答案

使用 rollapply动物园包中的功能。见?rollapply更多细节。

library(zoo)
rollapply(matrix[,1], width=3, mean, by=3)  

例子:
> set.seed(1)
> Data <- matrix(rnorm(30, 100, 50), ncol=2)  # some random data
> rollapply(Data[,1], width=3, mean, by=3)  
[1]  78.69268 118.40534 130.02559 126.60393  71.48317
> # you could check this out by doing some verification as in:
> mean(Data[1:3, 1])
[1] 78.69268
> mean(Data[4:6, 1])
[1] 118.4053
> mean(Data[7:9, 1]) # and so on ...
[1] 130.0256

如果您想要矩阵中所有列的均值,只需添加 by.column=TRUErollapply称呼:
> rollapply(Data, width=3, mean, by=3, by.colum=TRUE)
          [,1]      [,2]
[1,]  78.69268 114.71187
[2,] 118.40534 138.90166
[3,] 130.02559  81.12249
[4,] 126.60393 106.79836
[5,]  71.48317  74.48399

关于r - 取矩阵 r 中行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987686/

相关文章:

r - 在具有预测变量列表的数据帧上使用R的lm

r - R Shiny 应用程序的安全性

C矩阵程序

matlab - 在 MatLab 中查找通过 boolean 矩阵的路径长度

mysql - SQL:对所有行执行相同的操作

r - 为多个空间图形绘制相同的图例

r - 在 R 中创建多对

c++ - 重载 * 运算符的多个操作数

javascript - 如何使用javascript在html中动态添加行

python - PySpark:向数据框行元素添加新字段