Fusionner les données par horodatageJ'ai besoin de fusionner deux ensembles de données différents. Le premier, A, a des données collectées toutes les 2 minutes. Le second, B, a des données collectées uniquement lorsqu'une mesure franchit un seuil.
Un échantillon
2017-01-21:00:02:00, 1, 2, 3, 4
2017-01-21:00:04:00, 2, 3, 4, 5
2017-01-21:00:06:00, 3, 4, 5, 6
...
Échantillon B
2017-01-21:00:02:05, 4500
2017-01-21:00:05:14, 5700
...
Il suffira de mettre les données B dans la ligne A la plus proche. Par exemple, les données B à 2017-01-21:00:05:14 pourraient être placées dans A-row=2017-01-21:00:06:00
J'ai environ 170 000 lignes dans A ; et environ 4 000 lignes en B.
Merci
Re : Fusionner les données par horodatageMerci beaucoup txnelson ! Je vais le tester.
-gzhou
Re : Fusionner les données par horodatageVoici une modification du script qui, je pense, vous donnera ce que vous voulez.Maintenant, il n'a pas été entièrement testé, car vous n'avez pas fourni d'exemples de tableaux de données, mais je pense que cela devrait fonctionner, si la variable dans laquelle vous placez votre numéro d'expérience s'appelle "Experiment".
Names Default To Here( 1 );
Clear Symbols();
list_tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( list_tables, Data Table( i ) << get name )
); //sets up names of data tables to pick from
dt1 = Data Table( list_tables[1] );
dt2 = Data Table( list_tables[2] ); //Reasonable Starting point
win_tableselect = New Window( "Select Tables",
<<MODAL></MODAL>Re : Fusionner les données par horodatageComment pourriez-vous modifier ce script JMP pour lui permettre de joindre deux tables de données en faisant correspondre deux variables différentes ?
Par exemple : dans l'ensemble de données ci-dessous, je souhaite faire correspondre l'expérience #, puis la valeur min locale de l'horodatage pour joindre les valeurs de la table de données 2 à la table de données 1, de sorte que les valeurs de la table de données 2 se trouvent dans une ligne de l'horodatage le plus proche dans le tableau de données 1 avec le numéro d'expérience correct.
Un échantillon
Expérience 1, 2017-01-21:00:02:00, 1, 2, 3, 4
Expérience 1, 2017-01-21:00:04:00, 2, 3, 4, 5
Expérience 2, 2017-01-21:00:06:00, 3, 4, 5, 6
...
Échantillon B
Expérience 1, 2017-01-21:00:02:05, 4500
Expérience 2, 2017-01-21:00:05:14, 5700
Toute aide serait utile !
Merci
Re : Fusionner les données par horodatageJim,
Merci beaucoup. Je pense que nous sommes tous prêts maintenant.
Re : Fusionner les données par horodatageQuelques éléments ne fonctionnaient pas avec la ou les dernières versions de JMP dans le script référencé.Je les ai retravaillés et j'ai supprimé l'obligation de l'exécuter en tant qu'appel de fonction.Il vous suffit donc d'ouvrir les 2 tables de données et d'exécuter le script ci-dessous.Je l'ai exécuté avec vos données et cela a bien fonctionné.Je ne suis pas sûr que les résultats correspondent exactement à ce que vous voulez, mais cela vous donnera un tableau de données à partir duquel vous pourrez travailler.
Names Default To Here( 1 );
Clear Symbols();
list_tables = {};
For( i = 1, i <= N Table(), i++,
Insert Into( list_tables, Data Table( i ) << get name )
); //sets up names of data tables to pick from
dt1 = Data Table( list_tables[1] );
dt2 = Data Table( list_tables[2] ); //Reasonable Starting point
win_tableselect = New Window( "Select Tables",
<<MODAL></MODAL>Re : Fusionner les données par horodatagejoindre des sous-ensembles des fichiers que j'utilise
Re : Fusionner les données par horodatageMerci pour la réponse rapide.
J'ai mis une colonne "datetime-in-seconds" dans chaque table, donc tous les points de données ont un horodatage.
Je lance le script, il me demande de choisir une colonne dans chaque table, ce que je fais en sélectionnant la colonne "datetime-in-seconds" dans chaque table.
Le résultat final est juste une colonne supplémentaire dans dt2 appelée "Loc Min" qui est simplement des nombres entiers croissants 1,2,3,..
La fonction échoue-t-elle ou me manque-t-il quelque chose sur la façon de l'utiliser ?
Re : Fusionner les données par horodatagehttps://community.jmp.com/t5/Discussions/Join-Question-timestamp-range-kinda-sorta/mp/20828
Cela le fera ou au moins vous mettra sur la bonne voie. Et c'est bêtement rapide.