代码之家  ›  专栏  ›  技术社区  ›  Joni Hoppen

可以在openrefine上生成汇总表吗?

  •  2
  • Joni Hoppen  · 技术社区  · 8 年前

    我一直在想,是否可以像在python和R上一样,在OpenRefine上创建值的聚合和摘要?例子:

    30万记录的医疗预约表 Id患者|年龄| Id预约|价值

    按患者汇总的结果是:

    我希望足够清楚,如果该函数在Openrefine上工作,它将非常有帮助。

    1 回复  |  直到 8 年前
        1
  •  5
  •   Ettore Rizza    8 年前

    答案是“是的,但是”。。。这是可能的,但有点复杂。让我们举个例子。

    Id-patient,Age,Id-appointment,score
    1,25,1-1,456
    1,26,2-1,895
    1,27,3-1,872
    1,28,4-1,12
    1,29,5-1,87
    2,45,1-2,542
    2,46,2-2,524
    2,52,3-2,78
    2,89,4-2,45
    2,90,5-2,371
    

    为了对每个患者进行聚合计算,必须首先将每个患者转换为 record . 为此,请将“Id\u patient”列移到开头,并使用“blank down”(Id必须事先用 "Sort..." and "Reoder rows permanently" ).

    所有这些都将通过屏幕播放变得更加清晰:

    enter image description here

    演示中使用的公式包括:

    sort(row.record.cells.Age.value)[-1]
    

    格雷尔 :

    sum(row.record.cells.score.value) / length(row.record.cells.score.value)
    

    :

    def avg(l):
        return sum(l, 0.0) / len(l)
    
    return avg([x for x in row['record']['cells']['score']['value']])