Joindre deux ensembles de données, entre dates, par identifiant.Bonjour à tous, c'est la première fois,
J'essaie de combiner et de faire correspondre deux tables/ensembles de données différents provenant de deux sources différentes, avec très peu d'identifiants uniques...
Exemple de processus : Un widget est traité (ici avec deux réactifs différents) et la table de sortie (ci-dessous, une ligne par événement) contient les informations « Date de début de l'opération » et « Date de fin de l'opération ». L'identifiant unique du widget est « SFC » et « Ordre d'achat ».
Tableau de sortie 1

Entre la « Date et heure de début de l'opération » et la « Date et heure de fin de l'opération », les données de processus sont soumises (ci-dessous, 24 lignes par événement)...
Tableau de sortie 2

J'essaie de faire correspondre les données de soumission (Tableau de sortie 2) aux données d'événement (Tableau de sortie 1), c'est-à-dire les résultats de chaque événement. Bien que chaque widget SFC soit connecté à la commande, ils possèdent plusieurs ensembles de données d'événement ; par exemple, SN12345 == Commande 98765, et peuvent avoir plusieurs soumissions DATE (Tableau de sortie 2), mais chaque soumission DATE possède un identifiant GROUP_ID unique.
L'objectif principal est de faire correspondre le tableau de sortie 2 « NOM » et « VALEUR » au « Type de réactif » dans le tableau de sortie 1, où je peux ensuite visualiser la comparaison des réactifs.
J'espère que je l'ai bien expliqué (clair comme de la boue), et j'espère que c'est ainsi que ce site fonctionne !
Merci d'avance!
Fusion et nettoyage des donnéesPartage et communication des résultatsRe : Joindre deux ensembles de données, entre des dates, par identifiant.Quelle communauté incroyable ! Merci!
Re : Joindre deux ensembles de données, entre des dates, par identifiant.Je ne sais pas si c'est exactement ce que vous voulez. Les exemples de données ne fournissent pas une très bonne correspondance en fonction de l'heure de début et de fin de vos exemples de données. Veuillez exécuter le code ci-dessous sur des données plus complètes. J'ai également joint les 2 exemples de tableaux de données que vous avez fournis.
Names Default To Here( 1 );
dt1 = Data Table( "Output 1" );
dt2 = Data Table( "Output 2" );
// Loop through the Output 1 data table and set a unique id,
// and assign the same unique id to the Output 2 data rows
// that fall within the start and completion times
dt1 << New Column( "The Row", formula( Row() ) );
// Turn values to static
dt1:The Row << delete formula;
// Add a new column to the Output 2 data table that will be
// filled in below
dt2 << New Column( "The Row" );
For( i = 2, i <= N Rows( dt1 ), i++,
foundRows = dt2 << get rows where(
dt2:SFC == dt1:SFC[i] & dt2:SHOP_ORDER == dt1:Shop Order[i] & dt1:Operation Start Date Time[i] <= dt2
:DATETIME & dt1:Operation Completion Date Time[i] >= dt2:DATETIME
);
If( N Rows( foundRows ) > 0,
dt2:The Row[foundRows] = dt1:The Row[i];
)
);
// Join the data
dt3 = dt1 << Join(
With( dt2 ),
By Matching Columns(
:SFC = :SFC,
:Shop Order = :SHOP_ORDER,
:The Row = :The Row
),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve main table order( 1 )
);
// Cleanup the data tables
// uncomment the 2 lines below to automate the cleanup
// dt1 << delete columns(:The Row );
// dt2 << delete columns(:The Row );
Re : Joindre deux ensembles de données, entre des dates, par identifiant.Pourriez-vous fournir des exemples d’ensembles de données à tester ? Si vous le devez, vous pouvez anonymiser les données en utilisant la fonctionnalité Anonymiser de JMP trouvée dans le menu Tableaux. Je pense que vous pouvez tout anonymiser sauf les heures, SFC car celles-ci sont nécessaires pour la correspondance.