找到具有多个条件的矩阵中列的平均值

时间:2016-06-30 16:52:08

标签: r matrix mean which

我有一个名为风暴报告的4列矩阵,第一列是风暴严重程度的排名指数,第3列是风暴中冰雹报告的数量。我被要求找到冰雹报告的平均数量(第3列),排名指数大于0.25(第1列)。我被告知我可以使用哪个声明。非常感谢。这是一个样本矩阵:

样本矩阵:

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)

这就是我的尝试:

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

2 个答案:

答案 0 :(得分:0)

你是对的,which 的方式

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

如果您无法理解,则应逐步完成上述代码:

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] 

事实上,我们不必使用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])

答案 1 :(得分:0)

使用dplyr

的另一种方法
filter(strm_reports,strm_reports[,1]>0.25) %>% mutate(Mean_C3 = mean(C3))

数据

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 = "")