2017-06-12 5 views
-3

Ich habe eine Matrix, die so aussieht und wollen den Mittelwert jeder Spalte und kombinieren sie zu einer neuen Matrix.R - Kombinieren Spalte bedeutet in einer Matrix

> MDA 
      price  X3  X5  X10  X13  X20  X64  X86 
    [1,] 2.851921 0.19537 2.817065 6.5603 7.37657 2.273753 3.73926 4.08654 
    [2,] 1.355820 -0.58857 -0.253762 4.3871 3.62105 5.070533 6.03979 3.90909 
    [3,] -1.830597 1.74915 0.173217 5.5275 3.76552 3.100661 4.92384 3.16864 
    [4,] 6.535637 4.59728 5.848335 6.8814 10.25615 6.663288 3.87881 8.71351 
    [5,] 4.666041 -0.49024 2.353359 6.8693 8.86881 9.783803 5.42288 5.88306 
    [6,] 4.959884 2.09005 2.677156 10.1798 7.68598 5.771700 3.64374 4.89176 
    [7,] 4.014322 5.29507 0.238004 6.1883 6.52230 5.079508 5.33247 5.73703 
    ... 

Um dies zu tun, ich habe die folgende Methode wurde verwendet (beachten Sie all dies in einer Schleife daher der [x+1] erfolgt):

MeanMDA[x+1,] <- c(mean(MDA[,1]),mean(MDA[,2]),mean(MDA[,3]),mean(MDA[,4]),mean(MDA[,5]), 
       mean(MDA[,6]),mean(MDA[,7]),mean(MDA[,8])) 

Während diese einwandfrei funktioniert, ist es wirklich umständlich wird, wenn Die Anzahl der Spalten wird groß. Manchmal gibt es über 100 Variablen und ich muss den Code entsprechend durcharbeiten und bearbeiten ... Gibt es eine andere Möglichkeit, den Code so zu gestalten, dass er den Mittelwert jeder Zeile nimmt und ihn zu einer Matrix zusammenfügt?

+4

Wir können 'colMeans' dh' colMeans (MDA) ' – akrun

+0

Normalerweise ist es keine gute Idee aggregierten Werte zu setzen (zB bedeutet) in der gleichen Matrix wie das Original Werte. Daneben können Sie 'rbind (MDA, ...)' verwenden – jogo

Antwort

0

Wir verwenden colMeans

colMeans(MDA)