Il existe quatre valeurs temporelles courantes que vous pourriez être amené à gérer dans JMP : les dates, les heures, les datetimes et les durées. Que vous importiez des données depuis une base de données ou un fichier plat, que vous les référenciez en JSL ou que vous les utilisiez sur un axe dans JMP, il est important de comprendre comment JMP stocke ces valeurs et leurs implications.
Valeurs de date et d'heure
Les valeurs Datetime représentent une heure spécifique à une date spécifique, par exemple :
- 12h00, 20 janvier 2016
- 07 novembre 1918 15h00
- 20/07/1969 20:17
Comme dans la plupart des applications analytiques, les valeurs de date et d'heure sont stockées dans JMP sous forme d'unités de temps écoulées depuis une heure de référence. Dans JMP, l'heure de référence est minuit, le 1er janvier 1904, et les unités sont les secondes. En clair : JMP stocke les dates sous forme de secondes écoulées depuis minuit, le 1er janvier 1904.
Ainsi, les valeurs numériques correspondant aux valeurs datetime dans mes exemples ci-dessus sont :
| Date et heure |
Valeur date/heure JMP (secondes depuis minuit, 01janv1904) |
| 12h00, 20 janvier 2018 |
3536136000 |
| 07 novembre 1918 15h00 |
468687600 |
| 20/07/196920:17 |
2068661820 |
Dates
Dans JMP, les valeurs de date ne sont qu'un cas particulier de datetimes, car elles supposent que l'heure du jour est minuit. Elles comptent donc simplement le nombre de secondes écoulées entre minuit, le 1er janvier 1904, et minuit à la date stockée.
Fois
Les valeurs temporelles représentent une heure de la journée sans date précise. JMP les enregistre sous forme de secondes depuis minuit. Ainsi, 00:01:01 correspond à 61. Soixante-et-une secondes se sont écoulées depuis minuit.
Durées
Les durées ne sont pas si particulières, si ce n'est qu'elles sont des nombres représentant une unité de temps. Sans surprise, JMP gère mieux les durées en secondes. Nous aborderons ce sujet plus en détail lorsque nous aborderons le formatage des valeurs temporelles pour l'affichage.
Formatage des valeurs temporelles pour l'affichage
L'affichage des valeurs temporelles sous forme de nombre de secondes n'est pas particulièrement utile, c'est pourquoi JMP dispose d'un certain nombre de formats de date et d'heure pour afficher ces valeurs.
N'oubliez pas cependant que modifier l'affichage d'une date ne modifie ni la valeur sous-jacente ni son analyse. Par exemple, changer le format en « m/a » (mois/année) n'obligera pas JMP à synthétiser vos données par mois lors de leur analyse ou de leur représentation graphique. Pour ce faire, vous devrez créer une nouvelle colonne contenant les valeurs uniques à synthétiser. Pour créer ces nouvelles colonnes, transformez-les en faisant un clic droit sur l'en-tête et en choisissant « Nouvelle colonne de formules ».
Importation de valeurs temporelles
Lors de l'importation de données, il est important de s'assurer que vos valeurs temporelles sont stockées sous les valeurs numériques décrites ci-dessus. La plupart du temps, JMP le fait automatiquement lorsqu'il tente de reconnaître les valeurs temporelles lors des opérations d'importation ou de copier-coller. Vous pouvez vérifier si cela a été fait correctement en observant la justification des valeurs de la colonne dans le tableau de données. Les valeurs numériques sont justifiées à droite et les valeurs alphanumériques à gauche.
Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.La colonne « Wrong » est une colonne de caractères. Notez qu'elle est justifiée à gauche. La colonne « Right » est une colonne numérique. Elle est justifiée à droite.
Si vous constatez que vos valeurs temporelles sont stockées sous forme de chaînes de caractères, vous pouvez les convertir via la boîte de dialogue Informations sur la colonne. Il vous suffit de définir le type de données sur numérique, le format de date/heure souhaité et le format d'entrée sur celui qui décrit les chaînes de caractères de vos données. JMP convertira ensuite les valeurs en valeurs numériques appropriées.
First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.Commencez par modifier le type de données en numérique.
Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Choisissez le format que vous souhaitez utiliser pour afficher la valeur basée sur le temps.
Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Enfin, modifiez le format d’entrée pour qu’il corresponde au format des chaînes de la colonne.
Parse Date() une fonction utile
La fonction Analyser la date() (et son alias Informé() ) est également utile pour convertir des chaînes de caractères en valeurs numériques. Utilisée sans le troisième argument optionnel, elle analyse la chaîne d'entrée et tente de trouver le format d'entrée approprié. Elle est donc polyvalente, quel que soit le format d'entrée.
Calculs (c'est-à-dire mathématiques) utilisant des valeurs basées sur le temps
Le stockage de toutes ces valeurs temporelles sous forme de nombres signifie que nous pouvons effectuer des calculs mathématiques sur elles pour calculer l'âge, le temps écoulé depuis un événement, les convertir en d'autres unités de temps, etc.
Par exemple, la différence entre deux dates, heures ou valeurs datetime dans JMP sera le nombre de secondes entre les deux valeurs.
Cela signifie que vous devrez convertir le résultat en unités plus conviviales comme les minutes, les jours, les semaines ou les années (Astuce : les fonctions En heures() , En semaines() et autres fonctions In...() peuvent vous aider ici.)
JMP dispose d'un certain nombre de fonctions intégrées pour faciliter les calculs sur des valeurs basées sur le temps.
Voici quelques-uns de mes favoris :
Heure du jour (date/heure)
Cette fonction renvoie l'heure (c'est-à-dire le nombre de secondes écoulées depuis minuit) d'une valeur datetime. Elle est très utile pour convertir une valeur datetime en valeur date. Il suffit de soustraire la fonction Time of Day() de la datetime :
datetime = Today();
date = datetime - Time Of Day( datetime );
Show( As Date( date ) );
Différence de date (datetime1, datetime2, "interval_name", <"alignment">)
Cette fonction renvoie la différence entre deux valeurs date/heure. Bien sûr, vous pouvez le faire simplement en soustrayant l'une de l'autre, et vous obtiendrez le nombre de secondes qui les séparent. Cependant, Date Difference() vous permet de spécifier les unités de temps pour renvoyer la différence grâce à l'argument « interval_name ». Par exemple :
datetime1 = 01Sep2018:03:00:01;
datetime2 = 04Sep2018:14:10:15;
Date Difference( datetime1, datetime2, "Hour" );
Assurez-vous de consulter la liste complète des fonctions Date/Heure . Elles simplifient grandement le travail avec les valeurs temporelles.
Constantes de date et d'heure en JSL
La représentation des dates, des dates et des heures en JSL nécessite un format spécifique. Pour les dates, utilisez le format jj/mm/ss, et pour les heures, le format jj:hh:mm:ss. Par exemple :
time = 14:10:15;
date = 18Jan1957;
datetime = 11Jul2000:03:10:12;
Merci, @Jeff_Perkinson pour cet excellent aperçu des fonctionnalités disponibles.
Le retour sur investissement de la révision de cet article et de l’application de ces fonctionnalités dans nos flux de travail quotidiens est exceptionnel.
JMP fournit de nombreuses fonctions utiles pour l'importation, la conservation et l'analyse des données de dates - et elles font vraiment une différence dans la pratique !
Par ailleurs, certaines fonctionnalités manquent ou pourraient être améliorées, et JMP présente des comportements inattendus. On observe également des bugs, ou du moins des éléments perçus comme tels par certains utilisateurs, comme la différence entre « MDY » et « DMY », l'importation de dates d'horodatage depuis Unix/Python et les problèmes avec « Z » ou « ms ».
Si vous rencontrez des problèmes dans votre vie professionnelle quotidienne avec les dates et les heures, veuillez vérifier si le problème est répertorié, puis suivez le lien et votez !
Si ce n'est pas répertorié, veuillez poster votre problème ci-dessous ou directement dans la liste de souhaits.
Polissons JMP. Rendons-le plus rond que le monde.;)
Caractéristiques / Confort :
Bugs / ça ressemble à un bug :
Voici une autre astuce utile pour la conversion :
Comme indiqué précédemment, le premier problème lié à la conversion de dates est que, en arrière-plan, JMP « lit » la date comme le nombre de secondes écoulées depuis le 1er janvier 1904 à 00h00 (et Excel la « lit » à partir du 1er janvier 1900, soit près de 4 milliards de secondes, ce qui nous amènera au 3 octobre 2026 à 07h06min40s) ! C’est pourquoi vous verrez parfois des valeurs de l’ordre de 3,9 milliards lors de la conversion de dates.
Deuxièmement, même si vous pouvez modifier le format de l'heure affichée, JMP continuera de l'interpréter selon le format d'origine importé. Par exemple, si vous avez la date du 15/01/2020 et que vous souhaitez regrouper toutes les dates de janvier au format MM/AAAA (pour créer un graphique ou un tableau), changer simplement le format en MM/AAAA ne fonctionnera pas : JMP l'interprétera toujours selon le format d'origine importé.
Cela dit, les conversions de dates les plus réussies que j'ai obtenues pour les rendre utilisables sont :
- Pour MM/AAAA à partir de Date, j'utilise : Date DMY( 1, Month( :TRANSACTION_DATE ), Year( :TRANSACTION_DATE ) ) avec le format MM/AAAA.
- Pour YYYYQq à partir de Date, j'utilise : Date DMY( 1, Floor( (Month( :TRANSACTION_DATE ) - 1) / 3 ) * 3 + 1, Année( :TRANSACTION_DATE ) ) avec le format YYYYQq (c'est-à-dire 2020Q1).
Ces deux méthodes consistent essentiellement à regrouper toutes les dates d'un mois donné sur le premier jour du mois ou du trimestre, respectivement. Cela peut paraître étrange, mais c'est suffisant pour les besoins de tabulation, de séries chronologiques, de création de graphiques, etc.