【发布时间】:2022-01-15 07:52:22
【问题描述】:
我在 R 中有一个 68 列和近 43000 行的矩阵。它基本上是一个由较小的 68*68 矩阵组成的巨大矩阵。我需要得到每 15 个较小矩阵的平均矩阵(因为每 15 个矩阵等于一个参与者)。所以行 1-68、69-136 等直到 1020 (=15* 68)。我不知道如何制作一个 for 循环,它需要每 68 行并将其与下一个 68 等相加,同时仍保持 68 * 68 矩阵。我能够正确总结它们的唯一方法是对特定行编制索引,但由于我有 43000 行,而这个数据集是 30 多个文件中的第一个,我不想继续编制索引。
谁能帮我找到一个简单/快速的方法来做到这一点?
编辑:所以数据的一个例子是:
print(Matrix_Alpha_ami[1:3,1:5])
V1 V2 V3 V4 V5
[1,] 0.0000 0.4749 0.5629 0.6339 0.5406
[2,] 0.4749 0.0000 0.3157 0.5234 0.4737
[3,] 0.5629 0.3157 0.0000 0.5707 0.4191
> print(Matrix_Alpha_ami[69:71,1:5])
V1 V2 V3 V4 V5
[69,] 0.0000 0.4993 0.4812 0.5227 0.5018
[70,] 0.4993 0.0000 0.5444 0.6106 0.3324
[71,] 0.4812 0.5444 0.0000 0.5818 0.4107
列一直持续到 V68,行下降到 42k+
数据的第一位是矩阵 1 的开头,矩阵 2 的第二位。问题是它们不是单独的矩阵,而是一个大矩阵的一部分。因此,我不能只说 m1*m2。
最后,我需要一个包含 15 个矩阵的平均矩阵 - 获得一个参与者的所有测量值 (n=15) 的平均值。例如,从示例数据中我会得到 ((m1+m2)/2):
V1 V2 V3 V4 V5
[1,] 0.00000 0.48710 0.52205 0.57830 0.52120
[2,] 0.48710 0.00000 0.43005 0.56700 0.40305
[3,] 0.52205 0.43005 0.00000 0.57625 0.41490
【问题讨论】:
-
欢迎。您能否以纯文本形式发布您的数据的一个小示例(即使用 3 列而不是 68 列) - 这样更容易提供帮助。谢谢。
-
您的描述令人困惑。你需要
mean还是sum -
我添加了更多信息,希望这可以澄清它。不确定我是否可以立即得到平均值,所以这就是我谈论 sum 的原因!
-
按行表示?如果是,您想要的是 1:68、69:136 等行的平均值,它们都构成一个矩阵。然后对其他参与者重复此操作,等等?