2017-09-03 31 views
1

我一直在想,是否有可能在OpenRefine上創建一個聚合和值的彙總,就像在python和R上完成一樣?例如:是否可以在openrefine上創建彙總表?

300k記錄的醫療委員表 Id-patient |年齡| Id-appointment |值

由患者彙總和彙總的結果爲: Id-patient | last-age |平均值

我希望能夠清楚一點,如果該功能在Openrefine上工作,它會有很大的幫助。

回答

2

答案是「是,但是」......這是可能的,但有點複雜。我們舉個例子吧。

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_patient」列移動到開頭並使用「空白」(該ID必須事先與"Sort..." and "Reoder rows permanently"排序)。

之後,您可以對每個記錄的所有值進行計算,將其視爲數組。

這一切都將是一個截屏更清晰:

enter image description here

在演示中使用的公式是:

GREL

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

GREL

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

的Python/Jython的

def avg(l): 
    return sum(l, 0.0)/len(l) 

return avg([x for x in row['record']['cells']['score']['value']]) 

正如你所看到的,你可以做很多的事情開瑞風,尤其是在使用Pyhon/Jython的。但計算不是它的主要目的。 Open Refine主要用於探索,清理和豐富數據。這不是電子表格軟件。 Excel中的數據透視表可以更輕鬆地完成。正如你可以用Excel清理一些混亂的數據一樣,即使它不是最好的工具。

+1

謝謝,這個話題是先進的,從概念上說,在openrefine中做這件事會失去它的主要目標。感謝晚餐教程。我想這對其他人也是非常有用的。 –

相關問題