2016-06-30 27 views
0

Ich habe eine 4-Spalten-Matrix namens Storm-Berichte, die erste Spalte ist ein Ranking-Index wie stark der Sturm ist und die dritte Spalte ist die Anzahl der Hagel-Berichte in einem Sturm. Ich werde gebeten, die mittlere Anzahl von Hagel-Berichten zu finden (Spalte 3), mit einem Ranking-Index größer als 0,25 (Spalte 1). Mir wurde gesagt, ich könnte eine which-Aussage verwenden. Ich danke dir sehr. Hier ist eine Probenmatrix:Mittelwert einer Spalte in einer Matrix mit mehreren Bedingungen finden

Probenmatrix:

strm_reports <- matrix(c(0.276, 20, 108, 21, 
0.494, 10, 247, 31, 
0.008, 14, 38, 49, 
0.076, 1, 232, 30, 
0.085, 7, 97, 5), ncol = 4) 

Dies ist, was ich versucht habe:

mean_hail<-mean(sum(ifelse(strm_reports[,3] & strm_reports[,1]>0.25,1,0))) 

Antwort

0

du hast Recht, which ist ein Weg

mean(strm_reports[which(strm_reports[,1] > .25), 3]) 
gehen

Wenn Sie Probleme haben zu verstehen, sollten Sie ste p durch den obigen Code:

which(strm_reports[,1] > .25) #returns row indices for TRUE statements 

#returns only the values from the column we're interested in 
strm_reports[which(strm_reports > .25), 3] 

In der Tat, wir haben nicht which

strm_reports[,1] > .25 #returns a vector of TRUE and FALSE 
strm_reports[strm_reports[,1] > .25, 3] 
mean(strm_reports[strm_reports[,1] > .25, 3]) 
0

Ein weiterer Ansatz dplyr Paket

filter(strm_reports,strm_reports[,1]>0.25) %>% mutate(Mean_C3 = mean(C3)) 

Daten

strm_reports <- matrix(c(0.276, 20, 108, 21, 
0.494, 10, 247, 31, 
0.008, 14, 38, 49, 
0.076, 1, 232, 30, 
0.085, 7, 97, 5), ncol = 4,byrow = TRUE) 
strm_reports <- as.data.frame.matrix(strm_reports) 
colnames(strm_reports) <- paste("C",1:4,sep = "") 
verwenden