加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

你如何在Groovy中一起使用GroupBy和Sum?

发布时间:2020-12-14 16:25:00 所属栏目:大数据 来源:网络整理
导读:我有一个这样的集合: [[patient1,value1],[patient2,value2]] 例如. x = [[1,20.28],[1,11.11],[2,4.6],3.68]] 我使用countBy来获得每位患者的计数: def counts = x.countBy{patient,value - patient} 我试图得到每个病人的总和没有运气: def sums = x.gr
我有一个这样的集合:

[[patient1,value1],[patient2,value2]]

例如.
x = [[1,20.28],[1,11.11],[2,4.6],3.68]]

我使用countBy来获得每位患者的计数:

def counts = x.countBy{patient,value -> patient}

我试图得到每个病人的总和没有运气:

def sums = x.groupBy({patient,value -> patient }).collectEntries{p,v -> p:v.sum()}

有什么我想念的吗?

注意:这里的总体目标是获得患者使用的平均值:

def avgs = sums.collect{patient,value -> (value / counts[patient]) }

谢谢!

解决方法

在groupBy方法中,闭包标识要分组的内容,列表条目在分组值下归档:

x.groupBy { it[0] } // map entries by patient number

评估为

[1:[[1,11.11]],2:[[2,4.60],3.68]]]

collectEntries方法指定每个映射条目的外观,假设collectEntries的每个输入都有一个键的患者编号和该键的值对的列表.所以

x.groupBy {it[0]}.collectEntries {[(it.key): it.value.sum {it[1]}]}

评估为

[1:31.39,2:8.28]

每位患者的平均值是

x.groupBy {it[0]}.collectEntries {[(it.key): it.value.sum {it[1]}/it.value.size()]}

评估为[1:15.695,2:4.14]

平均值:

def avgs = [1:15.695,2:4.14]
def averageOfAverages = avgs.entrySet().sum {it.value} / avgs.size()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读