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 è di mio interesse e aggiungerei insieme la colonna della data e dell'ora 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 temporali sono corretti (come elencato nel file excel originale).
2. Quando cambio il formato dei file excel in CSV, i valori temporali 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 su 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 modifica il formato in numerico. Ma questo non funziona sempre!
- La funzione Second() estraeva valori negativi... e solo Second(), il che era interessante.la formula è sotto
- Informazioni(
Char( Formato( :Data, "gg/mm/aaaa" ) ) || " " ||
Char( Ora( :Ora, 24 ) ) || ":" || Char( Minuto( :Ora ) ) ||
":" || Char( 60 + Secondo( :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 aprirli nuovamente con JMP). C'è un altro modo per correggere i valori temporali più velocemente? Automatizzato? durante l'importazione dei file excel in JMP?
Accesso ai datiOggetto: valori temporali in xls o xlsx, csv e JMPSe visualizzi alcuni valori negativi per una durata o un valore di data importato come doppio in JMP e riconvertito in un'ora, è possibile che Excel e JMP utilizzino date di riferimento diverse per i loro valori di stato di data/ora.Excel utilizza 1/1/1900 e JMP utilizza 1/1/1904.Ci sono alcune informazioni su un post della community qui:
https://community.jmp.com/t5/JMPer-Cable/Using-dates-times-datetimes-and-durations-in-JMP/ba-p/68689
Brian Corcoran
Sviluppo JMP
Oggetto: valori temporali in xls o xlsx, csv e JMPHo replicato le tue scoperte.JMP 13-16 leggono tutti i valori Excel con gli stessi valori negativi.Ho esaminato il foglio di calcolo di Excel e non sono riuscito a trovare alcun motivo per i valori negativi, ma ripeto, non sono un esperto di Excel.
Forse un altro membro ha un'idea?
Oggetto: valori temporali in xls o xlsx, csv e JMPIn termini di importazione multipla di Excel, sto utilizzando uno script condiviso da qualcuno qualche tempo fa. In allegato qui.
Oggetto: valori temporali in xls o xlsx, csv e JMPQuesto è molto interessato. Ho aperto con la procedura guidata ma lo script della fonte è 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.
Oggetto: valori temporali in xls o xlsx, csv e JMPHo aperto il file Excel direttamente in JMP, ho utilizzato la procedura guidata per indicare che l'intestazione dei dati era sulla riga 6 e i dati iniziavano dalla riga 7.Ha generato il 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 loop JSL da leggere in ciascuno dei file utilizzando il codice di input sopra.
Oggetto: valori temporali in xls o xlsx, csv e JMPSi prega di ignorare quello allegato nel post originale e utilizzare questo come esempio. Grazie per averlo preso.
Oggetto: 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.
Oggetto: valori temporali in xls o xlsx, csv e JMPCorrezione:
Di seguito sono riportate le note dei miei pensieri su cosa sta succedendo e su 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 modifica il formato in numerico. Ma questo non funziona sempre!
2. La funzione Second() ha estratto valori negativi... e solo Second(), il che è stato interessante.la formula è sotto
Informazioni(
Char( Formato( :Data, "gg/mm/aaaa" ) ) || " " ||
Char( Ora( :Ora, 24 ) ) || ":" || Char( Minuto( :Ora ) ) ||
":" || Char( 60 + Secondo( :Time ) ),
"mm/gg/aaaa HH:mm:ss"
)