Come converto una "stringa" numerica in una data?Sono un nuovo utente e sto cercando di convertire una stringa numerica in un formato di data jmp.
Ho provato a creare una nuova colonna concatenando una stringa di caratteri in modo da poter almeno ottenere l'output "ggmmaaa" desiderato:
(Substr( :START_DATE, 7, 2 ) || Substr( :START_DATE, 5, 2 )) ||Substr( :START_DATE, 1, 4 ) ma questo non mi ha portato oltre.
Qualche idea su questo?

Re: Come converto una stringa numerica in una data?No mi dispiace, ora funziona
Grazie per l'aiuto
Re: Come converto una stringa numerica in una data?In realtà, quando lo eseguo sul file di test, ottengo dati mancanti in tutte le righe. Utilizzo JMP 12: può essere questo il motivo?Re: Come converto una stringa numerica in una data?Grazie, questo aiutaRe: Come converto una stringa numerica in una data?Esistono alcune differenze tra il modo in cui utilizzi lo script di Jim e la formula della colonna.
- La formula di colonna crea una nuova colonna basata sui vecchi dati. Se vengono aggiunte nuove righe, la formula viene eseguita automaticamente per convertire i valori della data. La vecchia colonna di dati non può essere eliminata a meno che non venga prima rimossa la formula.
- Lo script viene eseguito una volta, da un editor di script. Lo script di Jim converte la colonna sul posto, modificando il numero dalla rappresentazione originale a una rappresentazione data-ora JMP. Se vengono aggiunti più dati dopo l'esecuzione dello script, è necessario aggiungerli utilizzando il formato data-ora JMP previsto dalla colonna.
Penso che la domanda a cui potresti voler rispondere sia "come ho fatto a ottenere queste date che non piacciono a JMP e quale sarebbe un approccio migliore?"
Quando hai importato questi dati in JMP, possibilmente da un file CSV, o quando li hai digitati in una nuova tabella, JMP ha visto un numero e ha creato una colonna numerica. Per fare in modo che JMP veda una data nel 20180315 anziché 20.180.315 è necessario indicare a JMP di interpretare i dati nel formato aaaammgg. Puoi farlo con le proprietà della colonna in una tabella dati e specificare sia l'informazione che il formato.
informat yyyymmdd format monddyyyyinformat yyyymmdd format monddyyyyinformat formato aaaammgg lunedìaaa
Input Format available after choosing FormatInput Format available after choosing FormatFormato di input disponibile dopo aver scelto Formato
Se utilizzi l'importazione di file di testo per ottenere i dati da un file CSV, puoi anche specificare un formato per la colonna utilizzando il triangolo rosso sopra la colonna nella seconda pagina della procedura guidata di anteprima.
Text import preview wizard second pageText import preview wizard second pageSeconda pagina della procedura guidata di anteprima dell'importazione del testo
Infine, i valori di data e ora di JMP sono rappresentati come il numero di secondi dal 1° gennaio 1904. https://www.jmp.com/support/help/14/date-time-functions.shtml ha molte più informazioni.Se vedi un numero enorme che non ha senso, probabilmente ha bisogno di un formato. Puoi modificare il formato di output, mostrando 03 o Mar, poiché la rappresentazione interna rimane la stessa.
Re: Come converto una stringa numerica in una data?1. Data la tabella dei dati di esempio che hai fornito, lo script che ho pubblicato funziona correttamente. Guardare il file allegato
2. 12 è la larghezza del formato di visualizzazione.Vedere:
Aiuto==>Indice script==>Tabella dati==>Script colonne
per una descrizione ed esempi
Re: Come converto una stringa numerica in una data?questo post riguarda la parte (\d\d). Le parentesi creano gruppi e \d corrisponde a una singola cifra.
questo post riguarda \1-\2-\3. questi sono riferimenti all'indietro e testo extra (i trattini) inseriti nella stringa del risultato. I numeri si riferiscono alla parentesi aperta corrispondente.
Regex è uno strumento potente, ci sono molti tutorial su Internet.
Questo esempio è eccessivo per il problema in questione; JMP dispone di informazioni sulla data che corrispondono già al formato dei numeri dopo averli convertiti in caratteri.
Re: Come converto una stringa numerica in una data?Grazie per la condivisione. Lo capisco meglio, però a me funziona solo in prima fila. Successivamente restituisce semplicemente "valori mancanti".
E cosa ci fa il "12"?
dt : data d'inizio < < formato ( "ggmmaaaa" , 12 ) ;
?
Re: Come converto una stringa numerica in una data?Grazie, funziona. Non sono del tutto sicuro di averlo capito completamente, però.
È il "(\d\d\d\d)(\d\d)(\d\d)" indica il formato di input?
Cosa sta facendo "\1-\2-\3"?
Grazie per l'aiuto
Re: Come converto una stringa numerica in una data?Jim, ho iniziato in modo sbagliato. Il formato aaaammgg funziona senza regex o substr:
Informazioni( Char( :START_DATE ), "aaaammgg" )
Re: Come converto una stringa numerica in una data?Ecco un semplice script per fare la stessa cosa che ha fatto Craige
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:start_date = Date MDY(
Num( Substr( Char( :start_date ), 5, 2 ) ),
Num( Right( Char( :start_date ), 2 ) ),
Num( Left( Char( :start_date ), 4 ) )
)
);
dt:start_date << format("ddmmyyyy",12);Re: Come converto una stringa numerica in una data?Sei davvero vicino; avrai bisogno di char(start_date) per ottenere una stringa dal numero. Ho provato un approccio leggermente diverso per una formula di colonna
Informat( Regex( Char( :START_DATE ), "(\d\d\d\d)(\d\d)(\d\d)", "\1-\2-\3" ), "ymd" )
e imposta il formato della colonna
Output format different from input formatOutput format different from input formatFormato di output diverso dal formato di input
La rappresentazione interna preferita di JMP per le date è il valore data-ora JMP, ovvero un valore numerico che può essere formattato con numerosi formati diversi.