Comment agréger des données par heure dans des séries chronologiques ?Bonjour la communauté JMP,
Je travaille avec un ensemble de données chronologiques incluant des horodatages à la minute près (par exemple, 2025-07-12 14:03:00 ). J'essaie d'agréger les données par tranches horaires afin de visualiser les tendances au cours de la journée.
J'ai essayé d'utiliser la fonction Group avec Hour(DateTime), mais je ne suis pas sûr de l'appliquer correctement dans un tableau récapitulatif ou un graphique. Je me demande également s'il existe un moyen plus simple d'arrondir les horodatages à l'heure la plus proche avant l'agrégation ?
Des conseils ou des exemples de script pour le regroupement horaire seraient vraiment utiles.
Merci!
Jhonn Marie
Analyse et modélisation des données de baseAccès aux donnéesRe : Comment agréger des données par heure dans des séries chronologiques ?Je créerais une nouvelle colonne qui supprimerait les minutes et les secondes de votre colonne de date et d'heure. Vous pouvez la créer avec les formules rapides fournies par JMP, mais cela nécessitera peu d'entre elles. Commencez par créer une colonne de date.

Créez ensuite la colonne Heure

Et combinez-les

Ouvrez ensuite la colonne créée, modifiez le format et modifiez la formule en multipliant l'heure par « En Heures(1) » (équivalent à 60*60, qui représente les secondes en heures ; c'est ainsi que JMP gère le temps). La formule finale ressemblerait à ceci.
In Hours(:"Hour[Column 1]"n) + :"Date[Column 1]"n

Vous pouvez bien sûr effectuer tout cela dans une seule colonne en sélectionnant les formules des colonnes Heure (pensez à les convertir en heures) et Date, puis en les combinant. La formule finale ressemblerait à ceci (ce n'est pas la seule option) :
:Column 1 - Time Of Day(:Column 1) + In Hours(Hour(:Column 1))
où :La colonne 1 est la colonne de date et d'heure dont vous disposez

Vous pouvez également simplement déduire les secondes et les minutes (n'oubliez pas de les convertir en secondes) de votre date et heure et vous devriez obtenir un résultat similaire.
:Column 1 - Second(:Column 1) - Minute(:Column 1)*60

Un endroit pour en savoir plus sur la date et l'heure dans JMP Utilisation de JMP > Référence pour les fonctions JMP dans les formules > Fonctions de date et d'heure
Re : Comment agréger des données par heure dans des séries chronologiques ?JM :
Je travaille beaucoup avec des données de séries chronologiques de capteurs provenant d'historiens de données de processus.
Vos données sont-elles régulièrement réparties (moyenne ou instantané sur une minute, par exemple) ou comportent-elles des horodatages pouvant correspondre à n'importe quel moment de l'heure ? Souhaitez-vous agréger les données pour obtenir une moyenne horaire ou simplement arrondir les horodatages à l'heure la plus proche ?
Dans les deux cas, le moyen le plus simple est de : faire un clic droit sur la colonne d'horodatage > Nouvelle colonne de formule > Transformer > Arrondir > Heure la plus proche
Une fois que vous avez créé l'horodatage arrondi, pour créer la moyenne horaire : Tableaux > Résumé > Groupe : Horodatage arrondi ; ajoutez les colonnes de données avec les statistiques souhaitées < Résumé du tableau >
Je serais heureux d'en discuter davantage.
Re : Comment agréger des données par heure dans des séries chronologiques ?@markschahl
très confortable !!
bon : )
Re : Comment agréger des données par heure dans des séries chronologiques ?Ah, Incrément de date() fait le travail en arrière-plan.
La même fonction effectue le binning dans GraphBuilder - très utile !
Si vous vous interrogez sur les axes qui s'étendent jusqu'à l'année 0 :
Malheureusement, la fonction Incrément de date() ne traite pas les valeurs manquantes comme telles ; elles sont arrondies à 0.

quelques améliorations + corrections de bugs pour les axes de temps/date imbriqués/binnés & TS-00147884.
Re : Comment agréger des données par heure dans des séries chronologiques ?Pour contourner ce problème, on peut exclure les mauvaises lignes,
changer la formule en
tmp = Date Increment( :"date-time"n, "Hour", 0 );
If( tmp == -60084288000,.,tmp); // "0" = -60084288000
... or use -60084288000 as Code de valeur manquante via the column properties:

Re : Comment agréger des données par heure dans des séries chronologiques ?Je me demandais juste :

avec la date et l'heure arrondies aux minutes, il n'y a aucun problème de manque.
l'explication:

...pas d'incrément de date()
Donc, une autre approche pour arrondir aux heures :

: )