Helfen Sie mir bei der Tabellentransformation und der Konvertierung eines Zeitstempels?Ich habe also eine Datentabelle von einem Sensor, bei der ich nicht ganz sicher bin, wie ich sie richtig formatieren soll. Es handelt sich um einen Lichtsensor, der Spannungswerte ausgibt.
Die erste Spalte in der Tabelle ist die gemessene Wellenlänge und dann gibt es mehr als 100 Spalten für jedes Mal, wenn Daten gemessen werden.
Wie würde ich das richtig umwandeln oder drehen? Wäre nur eine Tabellentransposition die richtige Aktivität?
Als nächstes Ratschläge, wie man den Rohzeitstempel in eine verwendbare Zeitreihe umwandelt? Es sieht so aus.
TT-MM-JJJJTHH:MM:SS.###Z
Was kann ich tun, um dies in einen verwendbaren Zeitreihenwert umzuwandeln, der als x-Achse dargestellt werden kann? Es geht um eine Tausendstelsekunde in Schritten von 0,1 Sekunden.
Bonus, wie macht man das, um das Minimum und das Maximum zu finden und die Zeit auf 0 -> Maximum zu normalisieren?
...
14-07-2020T22:47:31.400Z
14-07-2020T22:47:31.500Z
14-07-2020T22:47:31.600Z
14-07-2020T22:47:31.700Z
14-07-2020T22:47:31.800Z
14-07-2020T22:47:31.900Z
...
Datenmischung und -bereinigungBetreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Danke, Jeff. Ihr Beitrag zu dieser endgültigen Gleichung ist großartig und beseitigt die Sorge über einen Lauf, der über Mitternacht hinausgeht.
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?
@aliegner1 schrieb:
Frage zu den Zeitstempeln: Wie würde ich diese in eine Rohzeitdauer umrechnen? Ich sehe, dass es die Formel „Datumsdifferenz“ gibt, aber es sieht so aus, als ob sie zwei Spalten benötigt. Wie mache ich daraus einfach eine Zeitreihe, die bei 0,000 s beginnt -> maximale Zeit?
Bevor wir zu sehr weiter gehen, müssen wir meiner Meinung nach diese Frage hier klären.@txnelson Ich habe das so interpretiert, dass Sie den Datumsteil des Datums-/Uhrzeitwerts entfernen möchten. Ich glaube nicht, dass du das willst.
Sie haben jetzt eine Spalte mit Datum/Uhrzeit-Werte . Diese Spalte kann als Zeitreihe verwendet werden, sie beginnt jedoch nicht bei 0.
Wenn Sie stattdessen lieber eine Spalte hätten, die den Zeitunterschied zwischen aufeinanderfolgenden Zeilen der Datentabelle zählt, können Sie dies einfach mit einer einfachen Subtraktion und tun Zeilensubskription .

Ich möchte hier auf ein paar Dinge hinweisen:
- In der ersten Zeile wird der Wert auf 0 gesetzt.
- Ich muss die Funktion Date Difference() nicht verwenden, da mich die Werte in Sekunden interessieren. Eine einfache Subtraktion funktioniert also.
- Wegen Gleitkomma-Arithmetik Der Unterschied dieser Werte beträgt nicht genau Zehntelsekunden. Ich habe diese Spalte so formatiert, dass sie in Zehntelsekunden angezeigt wird, also „Fester Dez“ mit 1 Dezimalstelle.
- Schließlich, aber vielleicht noch komplizierter, ist, dass Ihre ursprüngliche Frage besagte, dass Sie mehrere Wellenlängen hatten. Möchten Sie diese Zeitsequenz für jede Wellenlänge bei 0 neu starten? Wenn ja, ist das kein Problem. Es sind lediglich ein paar Änderungen an der Formel erforderlich.

- Jetzt sucht die Formel nach Zeile 1 oder damit sich der Lamda-Wert vom vorherigen Lambda unterscheidet (unter Verwendung von Lag()-Funktion ), um die Sequenz auf 0 zu setzen.
- Es verwendet außerdem Lag(), um den Wert der Sequenz in der vorherigen Zeile abzurufen, und addiert die Differenz der Zeitwerte zwischen der aktuellen und der vorherigen Zeile.
Ich hoffe, dass dies zur Klärung beiträgt und eine gute Richtung vorgibt.
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Angesichts der Fragen, die Sie stellen, ist meine erste Antwort, dass Sie etwas lesen müssen.Sie müssen die Dokumente „Discovering JMP“ und „Using JMP“ durchgehen.Beide sind in der JMP-Dokumentationsbibliothek im Pulldown-Menü „Hilfe“ verfügbar.
Was das Problem des Tagesüberlaufs betrifft, müssen Sie prüfen, ob die Datumsdifferenz () größer als 0 Tage ist. Wenn nicht, berechnen Sie die erforderliche Zeit.
Lamda muss nicht in ein Zeichen umgewandelt werden.Dies kann jedoch leicht durch Ändern des Datentyps erreicht werden.Oder Sie können den Modellierungstyp einfach in „Ordinal“ oder „Nominal“ ändern.
:Lamda << Data Type(character);
// or
:Lamda<<MODELING type=""></MODELING>
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Toller Jim!
ein paar Fragen, um zu sehen, was Sie denken:
- Wie kann man sich vor einem Run schützen, der über Mitternacht hinaus in den nächsten Tag geht? Die Verwendung von „Time of Day“, um eine absolute Zeit zu erhalten, oder deren Normalisierung, sodass sie bei Null beginnt, würde sich auf einen Lauf auswirken, der sich über zwei Tage erstreckt.
- Gedanken zur Konvertierung der Lambda-Spalte in eine Zeichenspalte? Es handelt sich im Wesentlichen um eine Bezeichnung, also sollte es nicht numerisch sein, oder? Es wird bei mehreren Wellenlängen t gemessen und dann werden die Daten gegen die Zeit aufgetragen.
- Wie könnte ich die Originaldatei in die neu erstellte Datentabelle einbetten? Ich habe das anfängliche dt = --> in einen Dialog zum Öffnen von Dateien geändert.

Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Hier ist ein kleines Skript, das Ihnen dabei helfen soll, Ihre Daten in ein analytisches Format zu bringen. Es nimmt Ihre Beispieldatentabelle und erstellt:

names default to here(1);
dt=current data table();
// Get the column names from the data table
colNames = dt << get column names;
// Remove Lamda from the list
remove from(colNames,1,1);
// Stack the data
dtStack = dt << Stack(
columns(
colNames
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output Table( "Stacked" )
);
// Create a new JMP DateTime column
dtStack << New Column( "Timestamp",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 26, 3 ),
Input Format( "d/m/y h:m:s", 0 ),
Formula( Informat( Word( 1, :Label, "Z" ), "d/m/y h:m:s" ) )
);
// Remove formula to convert column to static values
dtStack:Timestamp << delete formula;
// Create the Time variable
dtstack << New Column( "Time",
Numeric,
"Continuous",
Format( "hr:m:s", 17, 3 ),
Input Format( "hr:m:s", 0 ),
Formula( Time Of Day( :Timestamp ) )
);
// Get rid of no longer needed "Label" column
dtStack << delete columns( "Label" );
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Siehe beigefügte Teilmenge (vorgestapelt).
Ich erhalte die Tageszeit, muss mich dann aber vor den Bedingungen schützen, wenn ein Lauf über Mitternacht stattfindet und der Tag wechselt? Ich setze es auf Null, indem ich [time of day() - col minimum(time of day()) ausführe.
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Um eine Zeitstempelspalte (JMP-Datum/Uhrzeit) nur in einen Zeitwert umzuwandeln, verwenden Sie die Funktion „Time of Day()“. Es gibt effektiv die Anzahl der Sekunden von der vorherigen Mitternacht bis zum Zeitpunkt der Messung zurück.
Was das Stapeln betrifft, wenn sich die Spaltennamen von Tag zu Tag ändern, ist es einfach, eine Liste der Spalten in der Datentabelle abzurufen und diese Liste dann auf die Stack Platform-Anweisungen anzuwenden. Die an die Datentabelle zum Abrufen der Spaltennamen zu übergebende Nachricht lautet dt << get Column Names().
Wäre es möglich, eine Beispieldatentabelle oder -tabelle Ihrer Daten beizufügen? Es ist ziemlich schwierig, die Einzelheiten der Eingabedaten zu erkennen, was dazu führen kann, dass falsche Anweisungen weitergegeben werden.Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Vielen Dank, Jim und Jeff, die funktionieren großartig! Ich lese gerade etwas über word().
Frage zu den Zeitstempeln: Wie würde ich diese in eine Rohzeitdauer umrechnen? Ich sehe, dass es die Formel „Datumsdifferenz“ gibt, aber es sieht so aus, als ob sie zwei Spalten benötigt. Wie mache ich daraus einfach eine Zeitreihe, die bei 0,000 s beginnt -> maximale Zeit?
Frage zur Skripterstellung des Stack-Befehls: Wenn man sich das Skript ansieht, hat es für jede Spalte eine eindeutige Zeile. Wie kann ich diese für das nächste Mal, wenn ich diese Datendatei abrufe, dynamisch machen?
Data Table( "Sheet1" ) << Stack(
columns(
:Name( "14-07-2020T22:47:31.400Z" ),
:Name( "14-07-2020T22:47:31.500Z" ),
:Name( "14-07-2020T22:47:31.600Z" ),
....for every column...
),
Source Label Column( "TimeStamp" ),
Stacked Data Column( "data" ),
Output Table( "sensor table" )
)
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Jeff,
Ich schätze, mein Alter merkt man... Du bist mir schon wieder mit der Antwort zuvorgekommen.
Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Was Ihre Daten betrifft, würde ich vorschlagen, dass Sie sich mit dem Stapeln der Spalten befassen.Dieses Formular stellt Ihnen weitere JMP-Tools zur Analyse zur Verfügung.
Was Ihr Zeitstempelproblem betrifft ... hier ist ein Beispielskript, das eine Eingabespalte namens „TS“ nimmt und sie in eine JMP-Datums-/Uhrzeitspalte umwandelt.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "TS",
Character,
"Nominal",
Set Values(
{"14-07-2020T22:47:31.400Z", "14-07-2020T22:47:31.500Z",
"14-07-2020T22:47:31.600Z", "14-07-2020T22:47:31.700Z",
"14-07-2020T22:47:31.800Z", "14-07-2020T22:47:31.900Z"}
)
)
);
dt << New Column( "Column 2",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 26, 3 ),
Input Format( "d/m/y h:m:s", 0 ),
Formula( Informat( Word( 1, :TS, "Z" ), "d/m/y h:m:s" ) )
);Betreff: Hilfe bei der Tabellentransformation und Konvertierung eines Zeitstempels?Ich denke, alles, was Sie brauchen, ist Tabellen->Stapel Fügen Sie Ihre Zeitspalten in die Rolle „Stapelspalten“ ein.
Am Ende sollten Sie zwei Spalten haben: Wellenlänge und Zeit.
Was die Konvertierung Ihres Zeitstempels in eine JMP-Datums-/Uhrzeitspalte angeht, Wort() Und Informat() Gehe ich hierher:

Weiterführende Literatur:
Wenn Sie nur eine Funktion des Formeleditors erlernen, ist Word() die richtige
Verwenden von Datums-, Uhrzeit-, Datums- und Zeitangaben in JMP