2017-10-19 1 views
1

J'ai une matrice avec la dimension 100x300 où je veux réduire le nombre de colonnes, 300, en 100 colonnes en faisant la moyenne par 3 colonnes, c.-à-d. 3, devient la nouvelle colonne 1, les colonnes 4-6 devient la nouvelle colonne 2, et ainsi de suite. Alors que ma matrice 100x300 devient une matrice 100x100.Comment effectuer une ligne moyenne dans la matrice par 3 nombre de colonnes dans l'ordre en utilisant R

Une matrice aiment un peu

A <- matrix(rexp(30000, rate=.1), ncol=300) 

J'ai essayé quelque chose comme ça rowMeans(A, 3) ne peut malheureusement pas travailler. Toute orientation serait appréciée.

Répondre

1

Voici un exemple de moyenne 9 colonnes en 3 colonnes

#DATA 
set.seed(42) 
m = matrix(rnorm(90), ncol = 9) 

sapply(split(sequence(NCOL(m)), ceiling(sequence(NCOL(m))/3)), function(i) rowMeans(m[,i])) 
#    1   2   3 
# [1,] 0.78972984 0.3277913 0.03411781 
# [2,] -0.01978707 -0.1466863 0.11765521 
# [3,] -0.39921655 1.1229981 0.43126071 
# [4,] 0.52291618 -0.2309106 0.10843898 
# [5,] 0.72204682 -0.2578551 -0.82148326 
# [6,] 0.03311892 -0.3358800 0.83184534 
# [7,] 0.32333323 -0.3055211 0.29562900 
# [8,] -1.50475918 0.2276755 0.43983899 
# [9,] 0.01268471 -1.9462480 0.32276620 
#[10,] 0.20580146 0.3255511 0.14762346