Problemi con Update() sui valori EFT in virgola mobileI 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.
Il problema:
Python merge gestisce correttamente "nearest":
<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() non riesce per i valori vicini:
<CODE class="whitespace-pre! language-jsl">
timeSeriesTable << Update(
With( merged_batch ),
Match Columns(
:EFT_val = :EFT_val,
:Batch_ID = :Batch_ID
)
);
-
I metadati hanno meno righe rispetto alla tabella delle serie temporali.
-
Anche i valori che sembrano identici nell'interfaccia utente non riescono a causa delle differenze di precisione in virgola mobile.
Quando traccio il grafico nella tabella individuale 'merged_batch' funziona correttamente, ma dopo l'aggiornamento in `timeSeriesTable `, il grafico non traccia tutti i punti dati e alcune righe risultano mancanti.
Mi piace:
0 - presente
87.9669444444445 - presente
111.966666666667 - mancante
135.966111111111 - mancante
183.965555555556 - presente
205.965277777778 - presente
Automazione e scriptingAnalisi e modellazione dei dati di baseCombinazione e pulizia dei datiEsplorazione e visualizzazione dei datiRe: Problemi con Update() sui valori EFT in virgola mobilePuoi fornire tabelle di esempio? Stai cercando di unire 208.0955556 con 209 in JMP?
JMP non ha la funzionalità join nearest in modo nativo (è possibile crearne uno script e ci sono script nella community/componenti aggiuntivi per questo). C'è anche almeno un elemento della lista dei desideri che lo richiede.
Re: Problemi con Update() sui valori EFT in virgola mobileSì, poiché JMP non ha questa funzionalità, ho usato Python, che funziona e si integra molto bene con il codice. Allego le tabelle come riferimento.
e no, non sto cercando di unire 208.0955556 con 209. 209 è il valore registrato e il float proviene dalla macchina, ecco perché sto usando mergeasof in Python per i valori più vicini.
Re: Problemi con Update() sui valori EFT in virgola mobileC'è qualche problema o è solo un avviso che JMP non ha questa funzionalità?
Re: Problemi con Update() sui valori EFT in virgola mobileQuesto - Quando traccio il grafico nella tabella individuale 'merged_batch' funziona correttamente, ma dopo l'aggiornamento in `timeSeriesTable `, il grafico non traccia tutti i punti dati e alcune righe risultano mancanti.
Re: Problemi con Update() sui valori EFT in virgola mobile"111.966666666667 - mancante"

Abbiamo tutte le tabelle necessarie per creare il grafico? Dobbiamo dare per scontato che i metadati siano gli stessi di merged_batch?

Per me, join funziona, ma non mi fiderei molto perché eseguire join esatti con virgole mobili potrebbe dare risultati inaspettati, in quanto tendono a non essere esattamente precisi ( matematica in virgola mobile ).
Puoi provare a dare ai tuoi numeri più decimali per vedere più accuratamente cosa pensa JMP che siano

Re: Problemi con Update() sui valori EFT in virgola mobileAnche per me funziona la funzione Join e, sebbene entrambe le colonne abbiano timestamp simili, poiché sto filtrando i dati grezzi stessi, non sono molto soddisfatto del comportamento di aggiornamento di JMP.
Il motivo per cui non utilizzo Join è che finirebbe per creare nomi di colonna successivi 'nome colonna' di 'Nome tabella' 'n', dove 'n' è il numero di tabella successivo da più esecuzioni. Ho dovuto affrontare questo ostacolo e sono passato ad Aggiorna tabella.
Quindi il modo migliore è usare un decimale fisso? 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 ) );
Re: Problemi con Update() sui valori EFT in virgola mobileHo utilizzato Join per dimostrare che l'utilizzo di Update con i dati forniti non fa nulla, ma join offre la possibilità di unire colonne con lo stesso nome (e di aggiornare la tabella principale con i dati della seconda tabella).
Penso che l'arrotondamento potrebbe essere un'opzione. Oppure potresti usare pandas per costruire la tabella finale, dato che lo stai già usando in precedenza? Inoltre, per darti un consiglio, potresti non voler usare << Set Each Value in quel modo, perché non sono sicuro che JMP l'abbia già modificato per renderlo il comportamento previsto.
Re: Problemi con Update() sui valori EFT in virgola mobileQuesta funzionalità è in sospeso da un po': per favore supportate il desiderio di @jthi e votate:
Aggiungi fuzzy join / asof merge / join per colonne che non hanno corrispondenze esatte
Re: Problemi con Update() sui valori EFT in virgola mobileAddIn: Unisci le righe più vicine - Unisci le tabelle utilizzando colonne continue e valori più vicini / @jthi