私は大きな行列を持っています。目標は、列1、2、および3ですべて等しい値を持つすべての行を認識し、行の各セットの4番目の列で0のパーセンテージを計算することです。このすべてのパーセンテージを「データ」と呼ばれるベクトルに入れます。次に、列の共通値を記録する3つのベクトル(列ごと(最後の列を除く))が必要です。これらのベクトルを、列1、2、および3に対してそれぞれ「factor1」、「factor2」、および「factor3」と呼びます。私の行列は大きくて多数なので、計算するには高速で効率的なものが必要です。
たとえば、私はこのマトリックスを持っています:
[,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)
あなたの助けをどうもありがとう