以下代码允许我使用每个过滤器键的总和。如何将所有值相加并求平均值。即结合所有过滤值的结果。
val f= p.groupBy(d => (d.Id))
.mapValues(totavg =>
(totavg.groupBy(_.Day).filterKeys(Set(2,3,4)).mapValues(_.map(_.Amount))
示例输出:
Map(A9 -> Map(2 -> List(473.3, 676.48), 4 -> List(685.45, 812.73))
我想将所有值加在一起并计算总平均值。 即(473.3 + 676.48 + 685.45 + 812.73)/ 4
答案 0 :(得分:0)
对于给定的Map
,您可以先应用flatMap
两次以返回值序列,然后计算平均值:
val m = Map("A9" -> Map(2 -> List(473.3, 676.48), 4 -> List(685.45, 812.73)))
val s = m.flatMap(_._2.flatMap(_._2))
// s: scala.collection.immutable.Iterable[Double] = List(473.3, 676.48, 685.45, 812.73)
s.sum/s.size
// res14: Double = 661.99