"Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsJ'ai souvent des fichiers de données provenant de différentes sources que je souhaite joindre par heure, mais comme ils proviennent de différents systèmes, leurs horodatages sont légèrement différents.Nous avons résolu ce problème en utilisant des JMP KDTableGenericName objet qui permet une recherche rapide et folle du voisin le plus proche.Cette "fuzzymerge" trouvera la ligne la plus proche dans le temps dans une seconde table pour chaque ligne de la table principale et joindra ces lignes dans la table unique résultante.
J'ai trouvé quelques autres exemples de cela dans ma recherche sur la communauté, mais aucun avec une interface graphique pour le rendre accessible aux non-scripteurs.
Pour l'utiliser, exécutez d'abord le script 'fn_fuzzymerge_generic' pour charger la fonction personnalisée dans JMP.Exécutez ensuite le script fuzzymerge_generic_GUI avec vos tables de données ouvertes.Vous voudrez peut-être jeter un coup d'œil à une distribution de la colonne 'Fuzzy Merge delta' qui est la différence entre les colonnes de temps des deux tables pour les lignes qui ont été jointes.Les valeurs élevées indiquent qu'il n'y a pas de données "à proximité" de cette ligne dans la table principale.
Notez que cela trouvera la ligne la plus proche * dans n'importe quelle direction *, en avant ou en arrière dans le temps.
J'espère que cela aide quelqu'un!
Christo
L'analyse exploratoire des donnéesUtilitairesRe : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsMerci beaucoup, cela a été très utile pour notre groupe car nous devons souvent combiner plusieurs fichiers avec des horodatages différents. Fonctionne parfaitement! Je suggérerais une option pour enregistrer les résultats dans une nouvelle table avec un nouveau nom, plutôt que de changer la table principale elle-même.
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsVous avez donc la table A avec une ligne toutes les secondes et la table B avec une ligne toutes les heures.Si vous utilisez cette fusion floue et que vous fusionnez dans A (la table principale) à partir de la table B (la table 'avec'), vous finirez par trouver la ligne la plus proche dans B pour chaque ligne dans A.Il semble que ce que vous demandez est simplement de le faire dans l'autre sens - définissez la table B comme table "principale" et la table A comme table "avec". Appelons-le tableau C.Cela vous donnera la rangée de placards unique en A pour chaque rangée en B.Si vous voulez toujours une table avec autant de lignes que la table A, mais des données vides pour B, vous pouvez alors table->rejoindre C avec A en faisant correspondre l'horodatage.
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différents@klk J'ai une table avec des horodatages toutes les secondes et une autre table avec un horodatage toutes les heures. Les deux colonnes affichent le temps en heures. Lorsque je joins les tables avec votre script, il correspondra à la deuxième table à plusieurs endroits dans la première table jusqu'à ce qu'il atteigne un delta de 0,5, puis il correspondra à l'horodatage suivant. Je me retrouve avec plusieurs matchs au lieu d'un seul match.
Existe-t-il un moyen d'appliquer une seule correspondance floue ? peut-être en définissant manuellement un seul delta ?
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différents
@klk ce scénario est super !
Je me demandais si vous pouviez le compléter avec quelques éléments :
1. Ajouter un bouton d'annulation à la fenêtre de l'interface graphique
2. Serait-il possible de faire la jointure par groupe ? par exemple, je peux avoir deux séries chronologiques qui doivent être séparées, et le nom de la série se trouve dans l'une des colonnes.
Merci!!!
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsMerci d'avoir partagé! Il serait bon d'avoir un facteur de tolérance afin de ne pas joindre des index qui sont "trop éloignés".
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsKristo, oui, j'ai été dans cette situation exacte, comme je suis sûr que beaucoup de gens l'ont fait. J'ai juste décidé que ce serait trop difficile à comprendre. Heureux que vous ayez pris le temps d'écrire ce script.
Je sais que j'aurai bientôt l'occasion de l'utiliser.
Merci
Fiona
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsExcellent script et bon support. J'aime .
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsHeureux que cela aide !Notez que je viens de le mettre à jour avec un petit correctif.
Re : "Fuzzymerge" - joindre des tables avec des horodatages légèrement différentsTrès beau. Je cherchais quelque chose comme ça. Merci!