Valori temporali in xls o xlsx, csv e JMPCiao a tutti, ho uno strano problema con i valori temporali del mio excel. Ho alcuni dati (l'esempio è allegato qui come file excel), la colonna dell'ora è un interesse per me e aggiungerei la colonna della data e dell'ora insieme per creare una colonna della data e dell'ora. Per analizzare i dati, utilizzo JMP quindi sto importando il file excel.
Tuttavia, mi sono imbattuto in una serie di stranezze:
1. Quando importo più file (dai clienti per analizzare i loro dati per loro), i valori temporali i valori temporali (in secondi) sono negativi e inizia dal 1899 quando ho cambiato il formato in mm:gg:aaaa hh:mm :ss. Quando salvo di nuovo il file come CSV, quindi lo apro di nuovo con JMP, i valori dell'ora sono corretti (come elencato nel file excel originale).
2. Quando cambio il formato dei file excel in CSV, i valori dell'ora sono corretti una volta importati in JMP. Per i file che sono xls o xlsx, dovrò cambiarli in CSV. Perché?
Di seguito sono riportate le note dei miei pensieri su cosa sta succedendo e come sono arrivato alle due soluzioni che si traducono in un formato data-ora desiderato.
Come vedrai nella colonna "Formula terribile", ho dovuto fare un paio di cose per aggirare il problema:
- Converti la data e l'ora in stringhe di caratteri, quindi concatena entrambe le colonne. Copia le proprietà, incollale in una nuova colonna e quindi ripristina il formato in numerico. Ma questo non sempre funziona!
- La funzione Second() ha estratto valori negativi... e solo Second(), il che è stato interessante.la formula è sotto
- Informati(
Char( Formato( :Data, "mm/gg/aaaa" ) ) || " " ||
Char( Ora( :Ora, 24 ) ) || ":" || Char( Minute( :Time ) ) ||
":" || Char( 60 + Secondi( :Time ) ),
"mm/gg/aaaa HH:mm:ss"
)
Tuttavia, entrambe le soluzioni sembrano un po' laboriose (oltre a salvare gli excel importati in JMP come CSV, quindi riaprirli con JMP). C'è un altro modo per correggere i valori dell'ora più velocemente? Automatizzato? durante l'importazione dei file excel in JMP?
AnalisiTabella datiScriptingRe: Valori temporali in xls o xlsx, csv e JMPCorrezione:
Di seguito sono riportate le note dei miei pensieri su cosa sta succedendo e come sono arrivato alle due soluzioni che si traducono in un formato data-ora desiderato.
1. Converti la data e l'ora in stringhe di caratteri, quindi concatena entrambe le colonne. Copia le proprietà, incollale in una nuova colonna e quindi ripristina il formato in numerico. Ma questo non sempre funziona!
2. La funzione Second() ha estratto valori negativi... e solo Second(), il che è stato interessante.la formula è sotto
Informati(
Char( Formato( :Data, "mm/gg/aaaa" ) ) || " " ||
Char( Ora( :Ora, 24 ) ) || ":" || Char( Minute( :Time ) ) ||
":" || Char( 60 + Secondi( :Time ) ),
"mm/gg/aaaa HH:mm:ss"
)
Re: Valori temporali in xls o xlsx, csv e JMPSei sicuro che il file Excel che hai allegato sia quello corretto?La cartella di lavoro contiene file con informazioni sulle riunioni interne.
Re: Valori temporali in xls o xlsx, csv e JMPPer favore ignora quello allegato nel post originale e usalo come esempio. Grazie per averlo preso.
Re: Valori temporali in xls o xlsx, csv e JMPHo aperto il file Excel direttamente in JMP, ho usato la procedura guidata per indicare che l'intestazione dei dati era sulla riga 6 e i dati iniziavano sulla riga 7.Ha generato la seguente JSL
Open(
"$DOCUMENTS/Discussion Group/Time_issue_7Sep (2).xlsx",
Worksheets( "W-A20122_Halexistar_20210820-12" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 6 ),
Data Starts on Row( 7 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" ),
Column Numeric Format(
Index( 2 ),
Column Name( Variable 1 ),
Format( "Best", 9 )
),
Column Numeric Format(
Index( 3 ),
Column Name( Variable 2 ),
Format( "Best", 9 )
)
)
)
Entrambi i campi Data e Ora vengono letti come valori JMP di data e ora corretti.Poi tutto quello che dovevo fare era correre
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row( :Date = :Date + :time );
L'importazione di più file non sembra essere in grado di gestire gli offset di riga per leggere correttamente le intestazioni dalla riga 6 e i dati che iniziano dalla riga 7;
Ti suggerisco di creare il tuo ciclo JSL da leggere in ciascuno dei file utilizzando il codice di input sopra.
Re: Valori temporali in xls o xlsx, csv e JMPQuesto è molto interessato. Ho aperto con la procedura guidata ma lo script del sorgente è diverso dal tuo.
Open(
"C:\Users\liew-6\OneDrive - Mettler Toledo LLC\Desktop\JMP\Time_issue_7Sep.xlsx",
Worksheets( "W-A20122_Halexistar_20210820-12" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 6 ),
Data Starts on Row( 7 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
E se ho cambiato il formato del mio tempo in "migliore", vengono mostrati valori negativi. L'ho allegato qui.