我有一个名为风暴报告的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)))
答案 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 = "")