我有一个大矩阵。目标是识别在第 1,2 和 3 列中具有所有相等值的所有行,并计算每组行在第 4 列中 0 的百分比。将所有这些百分比放入一个称为“数据”的向量中。然后我需要三个向量(每列(最后一列除外))来记录列的公共值。我们将这些向量分别称为:“factor1”、“factor2”和“factor3”,分别用于第 1,2 和 3 列。由于我的矩阵很大而且数量众多,我需要一些快速高效的计算方法。
例如我有这个矩阵:
[,1][,2][,3][,4]
[1,] 1 1 1 0
[2,] 1 2 1 0
[3,] 3 2 1 0.6
[4,] 1 1 1 0.2
[5,] 1 2 1 0
[6,] 1 1 2 0.1
[7,] 3 2 1 0.9
在这里,我们将第 1 行和第 4 行组合在一起(基于第 1,2 和 3 列中的相等值)并计算 0 的百分比(在第 4 列中)(%zero 等于 0.5)
然后我们将第 2 行和第 5 行分组并再次计算 %zero(等于 1)
然后我们将第 3 行和第 7 行分组并计算 %zero(等于 0)
然后第 6 行是单独的,它的 %zero (等于 0)
这是我想要得到的向量:
> data = c(0.5,1,0,0)
> factor1 = c(1,1,3,1)
> factor2 = c(1,2,2,1)
> factor3 = c(1,1,1,2)
这些值的顺序并不重要。如果向量“data”中的值 0.5 在位置 2,那么所有因子的位置 2 应该是 1。
然后目标是运行以下 aov:
> aov(data ~ factor1 * factor2 * factor3)
非常感谢你的帮助