2017-11-15 1 views
0

Ich habe eine Matrix aus folgendem Aufbau:Mittelwert von 3 Zeilen in der Matrix

d <- read.table(text='Sample  Target Value 
Sample1 A   NA 
Sample1 A   2 
Sample1 A   3 
Sample2 A   1 
Sample2 A   2 
Sample2 A   3 
Sample1 B   1 
Sample1 B   2 
Sample1 B   3 
Sample2 B   NA 
Sample2 B   2 
Sample2 B   3', header=TRUE) 

Ich mag würde die Mittel der Value Spalte für jede Datenwiederholung nehmen. Also der Durchschnitt aller Zeilen, die haben Sample=Sample1 und Target=A, Sample=Sample2 und Target=B und so weiter und so fort.

sollte die Ausgabe eine Matrix so aussehen:

result <- read.table(text='Sample  Target Value 
Sample1 A   mean 
Sample2 A   mean 
Sample1 B   mean 
Sample2 B   mean' , header=TRUE) 

ich mit aggregate() dieses Problem zu lösen versucht, aber ich bin nicht sicher, wie es zu codieren, so dass es die Sample und Target Spalten und mißachten bewahrt die NA

Vielen Dank!

+5

'Aggregat (Value ~ Sample + Target, data = d, FUN = Mittelwert)' – jogo

+1

'd' und 'result' sind kein R-Matrizen. Sie sind Datenrahmen. –

+0

Vielen Dank! Das scheint das Problem zu lösen. Ich bin ziemlich neu in R, daher kenne ich die Unterschiede zwischen Datenrahmen und Matrizen nicht so gut. Ich laufe in ein Problem zwar: In seiner ursprünglichen Code ist die NA in Klammern, Dies bewirkt, dass alle Ergebnisse zu sein NA Irgendeine Idee, warum das ist? –

Antwort

2

Ich denke, aggregate ist in diesem Fall in Ordnung. Versuchen:

aggregate(d$Value, list(d$Sample, d$Target), mean, na.rm = TRUE) 
    Group.1 Group.2 x 
1 Sample1  A 2.5 
2 Sample2  A 2.0 
3 Sample1  B 2.0 
4 Sample2  B 2.5 
Verwandte Themen