Es gibt vier gängige zeitbasierte Werte, mit denen Sie in JMP arbeiten können: Datum, Uhrzeit, Datums- und Uhrzeitangaben sowie Dauer. Unabhängig davon, ob Sie Daten aus einer Datenbank oder einer Flatfile importieren, in JSL darauf verweisen oder sie auf einer Achse in JMP verwenden, ist es wichtig zu verstehen, wie JMP diese Werte speichert und welche Auswirkungen ihre Verwendung hat.
Datetime-Werte
Datums-/Uhrzeitwerte stellen eine bestimmte Uhrzeit an einem bestimmten Datum dar, zum Beispiel:
- 12:00 Uhr, 20. Januar 2016
- 07.11.1918 15:00 Uhr
- 20.07.1969 20:17
Wie in den meisten analytischen Anwendungen werden Datums- und Uhrzeitwerte in JMP als Anzahl von Zeiteinheiten seit einer Referenzzeit gespeichert. In JMP ist die Referenzzeit 0:00 Uhr am 1. Januar 1904, und die Einheiten sind Sekunden. Einfacher ausgedrückt: JMP speichert Datumsangaben als Anzahl von Sekunden seit Mitternacht am 1. Januar 1904.
Die numerischen Werte, die den Datums-/Uhrzeitwerten in meinen obigen Beispielen entsprechen, lauten also:
| Datum/Uhrzeit |
JMP-Datums-/Uhrzeitwert (Sekunden seit Mitternacht, 01.01.1904) |
| 12:00 Uhr, 20. Januar 2018 |
3536136000 |
| 07.11.1918 15:00 Uhr |
468687600 |
| 20.07.196920:17 |
2068661820 |
Termine
In JMP sind Datumswerte lediglich ein Sonderfall von Datums- und Uhrzeitangaben, da sie davon ausgehen, dass die Tageszeit 0:00 Uhr ist. Sie zählen also einfach die Anzahl der Sekunden von Mitternacht, 1. Januar 1904, bis Mitternacht des gespeicherten Datums.
Mal
Zeitwerte stellen eine Tageszeit ohne konkretes Datum dar. JMP speichert Zeitwerte als Sekunden des Tages ab Mitternacht. 0:01:01 Uhr ist also 61. Seit Mitternacht sind 61 Sekunden vergangen.
Dauer
Zeitdauern sind nichts Besonderes, außer dass es sich um Zahlen handelt, die eine bestimmte Zeiteinheit darstellen. Es überrascht nicht, dass JMP Zeitdauern am besten verarbeiten kann, wenn sie eine Anzahl von Sekunden darstellen. Wir werden mehr darüber sprechen, wenn wir über die Formatierung zeitbasierter Werte für die Anzeige sprechen.
Formatieren zeitbasierter Werte für die Anzeige
Die Anzeige zeitbasierter Werte als Anzahl von Sekunden ist nicht besonders nützlich, daher verfügt JMP über eine Reihe von Datums- und Zeitformaten zur Anzeige dieser Werte.
Bedenken Sie jedoch, dass sich durch die Änderung der Datumsanzeige weder der zugrunde liegende Wert noch dessen Analyse ändern. Wenn Sie beispielsweise das Format in „m/y“ (Monat/Jahr) ändern, wird JMP Ihre Daten bei der Analyse oder grafischen Darstellung nicht zwangsläufig nach Monaten zusammenfassen. Hierzu müssen Sie eine neue Spalte mit den einzelnen Werten erstellen, die Sie zusammenfassen möchten. Transformieren Sie dazu die Spalte , indem Sie mit der rechten Maustaste auf die Überschrift klicken und „Neue Formelspalte“ wählen.
Importieren zeitbasierter Werte
Beim Importieren von Daten ist es wichtig, dass Ihre zeitbasierten Werte als die oben beschriebenen numerischen Werte gespeichert werden. JMP erledigt dies in den meisten Fällen automatisch, da es versucht, zeitbasierte Werte beim Importieren oder Kopieren/Einfügen zu erkennen. Ob dies korrekt ist, erkennen Sie an der Ausrichtung der Werte in der Spalte in der Datentabelle. Numerische Werte werden rechtsbündig, Zeichenwerte linksbündig ausgerichtet.
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.Falsch ist eine Zeichenspalte. Beachten Sie, dass sie linksbündig ist. Rechts ist eine numerische Spalte. Sie ist rechtsbündig.
Wenn Sie feststellen, dass Ihre zeitbasierten Werte als Zeichenfolgen gespeichert sind, können Sie diese im Dialogfeld „Spalteninformationen“ konvertieren. Ändern Sie dazu einfach den Datentyp in „Numerisch“, das Format in das gewünschte Datums-/Zeitformat und das Eingabeformat in das Format, das die Zeichenfolgen in Ihren Daten beschreibt. JMP konvertiert die Werte dann in die entsprechenden numerischen Werte.
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.Ändern Sie zuerst den Datentyp in „Numerisch“.
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.Wählen Sie das Format aus, das Sie zum Anzeigen des zeitbasierten Werts verwenden möchten.
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.Ändern Sie abschließend das Eingabeformat, sodass es dem Format der Zeichenfolgen in der Spalte entspricht.
Parse Date() eine nützliche Funktion
Die Funktion Datum analysieren() (und ihr Alias Informat() ) eignet sich auch zum Konvertieren von Zeichenfolgen in numerische Werte. Ohne das optionale dritte Argument durchsucht sie die Eingabezeichenfolge und versucht, das passende Eingabeformat zu finden. Dies macht sie zu einer universellen Funktion, unabhängig vom Eingabeformat.
Berechnungen (d. h. Mathematik) mit zeitbasierten Werten
Durch das Speichern all dieser zeitbasierten Werte als Zahlen können wir mathematische Berechnungen durchführen, um das Alter, die seit einem Ereignis vergangene Zeit, die Umrechnung in andere Zeiteinheiten usw. zu berechnen.
Beispielsweise ist die Differenz zwischen zwei Datums-, Zeit- oder Datums-/Uhrzeitwerten in JMP die Anzahl der Sekunden zwischen den beiden Werten.
Dies bedeutet, dass Sie das Ergebnis in benutzerfreundlichere Einheiten wie Minuten, Tage, Wochen oder Jahre umrechnen müssen (Hinweis: Die Funktionen In Stunden() , In Wochen() und andere In...() können hierbei hilfreich sein.)
JMP verfügt über eine Reihe integrierter Funktionen , die Berechnungen zeitbasierter Werte vereinfachen.
Hier sind ein paar meiner Favoriten:
Tageszeit (Datum/Uhrzeit)
Diese Funktion gibt die Tageszeit (d. h. die Anzahl der Sekunden seit Mitternacht) eines Datums-/Uhrzeitwerts zurück. Dies ist sehr nützlich, um einen Datums-/Uhrzeitwert in einen Datumswert umzuwandeln. Sie müssen lediglich die Tageszeit() vom Datums-/Uhrzeitwert subtrahieren:
datetime = Today();
date = datetime - Time Of Day( datetime );
Show( As Date( date ) );
Datumsdifferenz (Datum/Uhrzeit1, Datum/Uhrzeit2, "Intervallname", <"Ausrichtung">)
Diese Funktion gibt die Differenz zwischen zwei Datums- und Uhrzeitwerten zurück. Sie können dies natürlich auch einfach durch Subtraktion der beiden Werte tun und erhalten so die Anzahl der Sekunden zwischen den beiden Werten. Mit Date Difference() können Sie jedoch die Zeiteinheiten für die Differenz mit dem Argument "interval_name" angeben. Beispiel:
datetime1 = 01Sep2018:03:00:01;
datetime2 = 04Sep2018:14:10:15;
Date Difference( datetime1, datetime2, "Hour" );
Sehen Sie sich unbedingt die gesamte Liste der Datums-/Uhrzeitfunktionen an. Sie erleichtern die Arbeit mit zeitbasierten Werten erheblich.
Datums- und Zeitkonstanten in JSL
Für die Darstellung von Datums-, Datums- und Uhrzeitangaben in JSL ist ein bestimmtes Format erforderlich. Datumsangaben müssen im Format ttMONjjjj und Uhrzeiten im Format tt:hh:mm:ss angegeben werden. Beispiel:
time = 14:10:15;
date = 18Jan1957;
datetime = 11Jul2000:03:10:12;
Vielen Dank, @Jeff_Perkinson, für diesen hervorragenden Überblick über die verfügbaren Funktionen.
Der Nutzen, diesen Beitrag erneut zu lesen und diese Funktionen in unsere täglichen Arbeitsabläufe zu integrieren, ist hervorragend.
JMP bietet so viele hilfreiche Funktionen für den Datenimport, die Datenaufbereitung und die Datenanalyse von Datumsangaben – und das macht sich in der Praxis wirklich bemerkbar!
Darüber hinaus gibt es einige Stellen, an denen Funktionen fehlen oder verbesserungswürdig sind, und an denen JMP sich unerwartet verhält. Es gibt auch einige Fehler – oder zumindest Dinge, die sich für manche Nutzer weltweit wie Fehler anfühlen, wie beispielsweise der Unterschied zwischen „MDY“ und „DMY“, der Datumsimport von Zeitstempeln aus Unix/Python und die Probleme mit „Z“ oder Millisekunden.
Sollten Sie im Arbeitsalltag Probleme mit Datums- und Zeitangaben haben, prüfen Sie bitte, ob das Problem aufgeführt ist – folgen Sie dann dem Link und geben Sie Ihre Stimme ab!
Falls Ihr Anliegen nicht aufgeführt ist, schildern Sie es bitte unten oder direkt in der Wunschliste.
Lasst uns JMP aufpolieren. Lasst es runder machen als die Welt.;)
Ausstattung / Komfort:
Fehler / fühlt sich wie ein Fehler an:
Hier noch ein hilfreicher Tipp für die Umrechnung:
Wie bereits erwähnt, besteht das erste Problem bei der Datumskonvertierung darin, dass JMP im Hintergrund das Datum als Anzahl der Sekunden seit dem 1. Januar 1904, 00:00:00 Uhr, „liest“ (und Excel es ab dem 1. Januar 1900 „liest“, was fast 4 Milliarden Sekunden entspricht, die wir am 3. Oktober 2026 um 07:06:40 Uhr erreichen werden)! Daher werden Sie bei der Datumskonvertierung manchmal Werte im Bereich von 3,9 Milliarden sehen.
Zweitens: Auch wenn Sie das Zeitformat ändern können, liest JMP die Zeit weiterhin im ursprünglich importierten Format. Beispiel: Ich habe das Datum 15.01.2020 und möchte alle Januar-Daten im Format MM/JJJJ gruppieren (für Diagramme oder Tabellen). Eine einfache Formatänderung in MM/JJJJ reicht nicht aus – JMP liest das Datum weiterhin im ursprünglich importierten Format.
Allerdings waren meine erfolgreichsten Ergebnisse bei der Umwandlung von Datumsangaben in verwendbare Formate bisher folgende:
- Für MM/JJJJ ab Datum verwende ich: Date DMY( 1, Month( :TRANSACTION_DATE ), Year( :TRANSACTION_DATE ) ) mit dem Format MM/JJJJ.
- Für YYYYQq aus Date verwende ich: Date DMY( 1, Floor( (Month( :TRANSACTION_DATE ) - 1) / 3 ) * 3 + 1, Jahr( :TRANSACTION_DATE ) ) mit dem YYYYQq-Format (d. h. 2020Q1).
Beide Funktionen nehmen im Prinzip alle Daten eines bestimmten Monats und setzen sie jeweils auf den ersten Tag des Monats bzw. Quartals. Das mag zwar etwas umständlich erscheinen, funktioniert aber für Ihre Zwecke wie Tabellen, Zeitreihen, Diagrammerstellung usw.