La réponse est "oui mais" ... C'est possible, mais un peu compliqué. Prenons un exemple.
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
Afin de faire des calculs globaux par patient, vous devez d'abord transformer chaque patient en record. Pour ce faire, déplacez la colonne "Id_patient" au début et utilisez "blank down" (L'identifiant doit être préalablement trié avec "Sort..." and "Reoder rows permanently"). Ensuite, vous pouvez effectuer des calculs sur toutes les valeurs de chaque enregistrement, considéré comme un tableau.
Tout cela sera plus clair avec un screencast:
Les formules utilisées dans la démo sont:
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']])
Comme vous pouvez le voir, vous pouvez faire beaucoup de choses avec Open Affiner, notamment à l'aide Pyhon/Jython. MAIS les calculs ne sont pas son but principal. Open Refine est conçu principalement pour explorer, nettoyer et enrichir les données. Ce n'est pas un tableur. Vous pouvez faire la même chose beaucoup plus facilement avec les tableaux croisés dynamiques dans Excel. Tout comme vous pouvez nettoyer certaines données désordonnées avec Excel, même si ce n'est pas le meilleur outil pour cela.
Merci, ce sujet est très avancé et conceptuellement parler de cela dans openrefine perd un peu ses principaux objectifs. Merci pour le tutoriel du souper. Je suppose que ce sera très utile pour d'autres aussi. –