Aiutare a trasformare una tabella e convertire un timestamp?quindi ho una tabella di dati da un sensore che non sono del tutto sicuro di come formattare correttamente. È un sensore di luce che emette letture di tensione.
La prima colonna nella tabella è la lunghezza d'onda misurata e poi ci sono più di 100 colonne per ogni volta che misura i dati.
Come dovrei fare per trasformare o ruotare correttamente questo? Solo una trasposizione della tabella sarebbe l'attività corretta?
Successivamente, consigli su come convertire il timestamp non elaborato in una serie temporale utilizzabile? Viene fuori con questo aspetto.
GG-MM-AAAA:MM:SS.###Z
cosa posso fare per convertirlo in un valore di serie temporale utilizzabile da tracciare come asse x? È fino al millesimo di secondo, con incrementi di 0,1 secondi.
Bonus, come fare per trovare il minimo e il massimo e normalizzare il tempo in modo che sia 0 -> massimo?
...
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
...
Miscelazione e pulizia dei datiRi: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Grazie Jeff. Il tuo contributo su quell'equazione finale è ottimo e rimuove la preoccupazione per una corsa che attraversa la mezzanotte.
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?
@alienner1 ha scritto:
Domanda sui timestamp: come posso convertirlo in una durata temporale non elaborata? Vedo che c'è la formula "Date Difference", ma sembra che abbia bisogno di due colonne. Come faccio a creare una serie temporale a partire da 0.000 -> tempo massimo?
Prima di andare troppo oltre, penso che dobbiamo chiarire questa domanda qui.@txnelson interpretato come se volessi sbarazzarti della parte della data del valore datetime. Non credo sia quello che vuoi.
Ora hai una colonna di valori di data e ora . Quella colonna può essere utilizzata come una serie temporale, semplicemente non inizierà da 0.
Se, invece, preferisci una colonna che conteggi la differenza di tempo tra righe consecutive della tabella di dati che è facile da fare con una semplice sottrazione e sottoscrizione di riga .

Ho un paio di cose da sottolineare qui:
- Nella prima riga il valore è impostato su 0.
- Non ho bisogno di usare la funzione Date Difference() perché sono interessato ai valori in secondi. Quindi, la semplice sottrazione funziona.
- Per colpa di aritmetica in virgola mobile la differenza di questi valori non è esattamente sui decimi di secondo. Ho formattato questa colonna per la visualizzazione in decimi di secondo, cioè Fixed Dec con 1 cifra decimale.
- Infine, ma forse più complicato è che la tua domanda originale diceva che avevi più lunghezze d'onda. Vuoi riavviare questa sequenza temporale a 0 per ogni lunghezza d'onda? Se è così, non è un problema. Ci vorranno solo un paio di modifiche alla formula.

- Ora la formula verifica la riga 1 O affinché il valore lambda sia diverso dal lambda precedente (utilizzando il file Funzione ritardo() ) per impostare la sequenza su 0.
- Utilizza anche Lag() per ottenere il valore della sequenza nella riga precedente e aggiunge la differenza nei valori temporali tra la riga corrente e quella precedente.
Spero che questo aiuti a chiarire e fornire una buona direzione.
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Date le domande che stai ponendo, la mia prima risposta è che devi leggere un po'.È necessario esaminare entrambi i documenti Alla scoperta di JMP e Utilizzo di JMP.Entrambi sono disponibili nella libreria della documentazione di JMP nel menu a discesa Guida.
Per quanto riguarda il problema dell'overflow del giorno... ciò che dovrai fare è verificare se Date Difference() è maggiore di 0 giorni e, in caso contrario, calcolare l'ora come richiesto.
Lamda non deve essere cambiato in un personaggio.Ma è possibile farlo facilmente modificando il tipo di dati.Oppure puoi semplicemente modificare il Tipo di modellazione in Ordinale o Nominale.
:Lamda << Data Type(character);
// or
:Lamda<<MODELING type=""></MODELING>
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Fantastico Jim!
alcune domande per vedere cosa ne pensate:
- come difendersi da una corsa che va oltre la mezzanotte fino al giorno successivo? l'uso dell'ora del giorno per ottenere un tempo assoluto o normalizzarlo per iniziare da zero sarebbe influenzato da un'esecuzione che copre 2 giorni.
- Pensieri sulla conversione della colonna Lambda in una colonna di caratteri? È essenzialmente un'etichetta, quindi non dovrebbe essere numerica, giusto? Misura a diverse lunghezze d'onda t quindi traccia i dati v tempo.
- come potrei incorporare il file originale nella tabella dati appena creata? Ho cambiato l'iniziale dt = --> in una finestra di dialogo di apertura file.

Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Ecco un piccolo script che dovrebbe darti un buon "vantaggio" per ottenere i tuoi dati in un formato analitico. Prende la tua tabella di dati di esempio e crea:

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" );
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Vedere il sottoinsieme allegato (preimpilato).
Ottengo l'ora del giorno, ma poi devo proteggermi dalle condizioni in cui si verifica una corsa oltre la mezzanotte e il giorno cambia? Lo sto azzerando facendo [time of day() - col minimum(time of day())
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Per convertire una colonna Time Stamp(JMP Date/Time) in un solo valore orario, si utilizza la funzione Time of Day(). Restituisce effettivamente il numero di secondi dalla mezzanotte precedente all'ora della misurazione.
Per quanto riguarda l'impilamento quando i nomi delle colonne cambiano di giorno in giorno ...... è semplice ottenere un elenco delle colonne nella tabella dei dati e quindi applicare tale elenco alle istruzioni Stack Platform. Il messaggio da passare alla tabella dati per recuperare i nomi delle colonne è dt << get column names().
Sarebbe possibile allegare una tabella di dati di esempio o un foglio di calcolo dei tuoi dati. È piuttosto difficile vedere le specifiche dei dati di input, il che può comportare la trasmissione di indicazioni fasulle.Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Grazie Jim e Jeff, quelli funzionano alla grande! Sto leggendo su word () in questo momento.
Domanda sui timestamp: come posso convertirlo in una durata temporale non elaborata? Vedo che c'è la formula "Date Difference", ma sembra che abbia bisogno di due colonne. Come faccio a creare una serie temporale a partire da 0.000 -> tempo massimo?
Domanda sullo scripting del comando stack: guardando lo script, ha una riga univoca per ogni colonna .... come rendere questo dinamico per la prossima volta che estraggo questo file di dati?
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" )
)
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Jeff,
Immagino che la mia età stia mostrando ..... mi hai battuto di nuovo nella risposta.
Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Per quanto riguarda i tuoi dati, ti suggerirei di esaminare l'impilamento delle colonne.Quel modulo ti fornirà più strumenti JMP per l'analisi.
Per quanto riguarda il tuo problema Timestamp .... ecco uno script di esempio che prende una colonna di input chiamata "TS" e la converte in una colonna Data/Ora JMP.
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" ) )
);Ri: Aiuto nella trasformazione di una tabella e nella conversione di un timestamp?Penso che tutto ciò di cui hai bisogno sia Tabelle->Impila inserendo le tue colonne temporali nel ruolo Stack Columns.
Dovresti finire con due colonne, lunghezza d'onda e tempo.
Per quanto riguarda la conversione del timestamp in una colonna datetime di JMP, Parola() E Informazioni() sono il mio andare a qui:

Ulteriori letture:
Se impari solo una funzione dell'editor di formule, Word () è quella
Utilizzo di date, ore, datetime e durate in JMP