Probleme mit Update() bei Gleitkomma-EFT-WertenI am merging sample-level metadata with time-series raw measurements using Python’s merge_asof and then updating the time-series table in JMP using Update(). Both tables contain columns for time (EFT) and batch ID.
Das Problem:
Python merge verarbeitet „nearest“ korrekt:
<CODE class="whitespace-pre! language-python">
merged_batch = pd.merge_asof(
metadata_batch.sort_values('EFT_val'),
timeseries_batch.sort_values('EFT_val'),
left_on='EFT_val',
right_on='EFT_val',
direction='nearest'
)
JMP Update() schlägt bei nahen Werten fehl:
<CODE class="whitespace-pre! language-jsl">
timeSeriesTable << Update(
With( merged_batch ),
Match Columns(
:EFT_val = :EFT_val,
:Batch_ID = :Batch_ID
)
);
-
Die Metadatentabelle enthält weniger Zeilen als die Zeitreihentabelle.
-
Selbst Werte, die in der Benutzeroberfläche identisch aussehen, schlagen aufgrund von Unterschieden in der Gleitkomma-Genauigkeit fehl.
Wenn ich den Graphen in der einzelnen Tabelle 'merged_batch' erstelle, funktioniert alles einwandfrei. Nach dem Update in der `timeSeriesTable` werden jedoch nicht alle Datenpunkte im Graphen angezeigt, und es fehlen auch einige Zeilen.
So was:
0 - heute
87.9669444444445 - Gegenwart
111.966666666667 - fehlt
135.966111111111 - fehlt
183,965555555556 - Gegenwart
205.965277777778 - Gegenwart
Automatisierung und SkripterstellungGrundlagen der Datenanalyse und ModellierungDatenzusammenführung und -bereinigungDatenexploration und -visualisierungBetreff: Probleme mit Update() bei Gleitkomma-EFT-WertenKönnen Sie Beispieltabellen bereitstellen? Versuchen Sie , 208.0955556 mit 209 in JMP zu verknüpfen?
JMP bietet keine native Funktion zum Verbinden von Nachbarn (man kann dies jedoch per Skript realisieren, und es gibt entsprechende Skripte in der Community bzw. als Add-Ins). Es existiert außerdem mindestens ein Wunschvorschlag.
Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenDa JMP diese Funktion nicht bietet, habe ich Python verwendet, was einwandfrei funktioniert und sich sehr gut in den Code integriert hat. Die Tabellen sind beigefügt.
Nein, ich versuche nicht, 208.0955556 mit 209 zu verknüpfen. 209 ist ein gespeicherter Wert, und die Gleitkommazahl stammt vom Rechner. Deshalb verwende ich in Python die Funktion `mergeasof`, um die nächstgelegenen Werte zu finden.
Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenGibt es ein Problem oder ist dies nur ein Hinweis darauf, dass JMP diese Funktion nicht bietet?
Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenFolgendes: Wenn ich den Graphen in der einzelnen Tabelle „merged_batch“ erstelle, funktioniert alles einwandfrei. Nach dem Update in der „timeSeriesTable“ werden jedoch nicht alle Datenpunkte im Graphen angezeigt, und es fehlen auch einige Zeilen.
Betreff: Probleme mit Update() bei Gleitkomma-EFT-Werten"111.966666666667 - fehlt"

Haben wir alle erforderlichen Tabellen, um das Diagramm zu erstellen? Sollten wir davon ausgehen, dass die Metadaten mit den Daten aus dem zusammengeführten Batch übereinstimmen?

Bei mir funktioniert Join, aber ich würde ihm nicht wirklich vertrauen, da die Durchführung eines exakten Joins mit Gleitkommazahlen zu unerwarteten Ergebnissen führen kann, da diese in der Regel nicht exakt präzise sind ( Gleitkommaarithmetik ).
Sie können versuchen, Ihren Zahlen mehr Dezimalstellen zu geben, um genauer zu sehen, was JMP daraus macht.

Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenJoin funktioniert bei mir auch, und obwohl beide Spalten ähnliche Zeitstempel haben, da ich direkt aus den Rohdaten filtere, bin ich mir über das Aktualisierungsverhalten von JMP nicht ganz im Klaren.
Der Grund, warum ich Join nicht verwende, ist, dass dadurch nachfolgende Spaltennamen 'Spaltenname' von 'Tabellenname' 'n' entstehen würden, wobei 'n' die nachfolgende Tabellennummer aus mehreren Durchläufen ist. An diesem Problem bin ich gescheitert und bin deshalb auf Update Table umgestiegen.
Wäre es also besser, eine feste Dezimalzahl zu verwenden? 1e-8, 1e-12?
dt = Current Data Table();
col = Column( dt, "EFT" );
// Replace each value with a rounded version (e.g., 8 decimals)
col << Set Each Value( Round( :EFT, 1e-14 ) );
Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenIch habe Join verwendet, um zu demonstrieren, dass die Verwendung von Update mit den bereitgestellten Daten nichts bewirkt, Join jedoch das Zusammenführen von Spalten mit gleichem Namen ermöglicht (und die Haupttabelle mit Daten aus der zweiten Tabelle aktualisiert).
Runden wäre eine Möglichkeit. Oder könnten Sie Pandas verwenden, um die endgültige Tabelle zu erstellen, da Sie es ja bereits zuvor eingesetzt haben? Nur zur Info: Sie sollten << Set Each Value in diesem Fall möglicherweise nicht verwenden, da ich nicht sicher bin, ob JMP das Verhalten inzwischen entsprechend angepasst hat.
Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenDiese Funktion ist noch in der Schwebe – bitte unterstützen Sie @jthi und stimmen Sie ab:
Fuzzy Join / ASOF Merge / Join nach Spalten hinzufügen, die keine exakten Übereinstimmungen haben
Betreff: Probleme mit Update() bei Gleitkomma-EFT-WertenAdd-In: Nächste Zeilen verbinden – Tabellen mithilfe von fortlaufenden Spalten und nächstgelegenen Werten verknüpfen / @jthi