Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?In JMP 14.2.0, quando leggo (o apro) un file CSV che contiene una colonna con valori del numero di versione a 3 cifre, tali valori vengono interpretati come una data. Ad esempio, se verTest.csv contiene:
Product,Station,Version,Date
Widget,Audio-Test,2.2.2044,3/2/19
Widget,RF-Test,2.2.2045,3/2/20
tutti i valori delle colonne vengono interpretati come previsto tranne i valori Versione che vengono letti come date, ad esempio, 2/2/2044 e 2/2/2045, con tipo di dati numerico, tipo di modellazione continua e con m/g/y formato. Trovo che i numeri di versione a 2 e 4 cifre vengano letti correttamente, cioè come stringhe di caratteri.
Un'ulteriore complicazione è che non so in anticipo quali colonne potrebbero contenere questo formato, quindi non posso impostare esplicitamente i tipi di colonna in anticipo (né è chiaro se sia possibile impostare i tipi di colonna prima dell'apertura un file CSV). E se provo a modificare manualmente i tipi di colonna dopo il fatto, sembra che i caratteri "/" siano integrati in modo tale che la modifica del tipo in Carattere lasci il valore con una stringa "2/2/2044".
Esiste un modo per inibire questa interpretazione in modo che i numeri di versione a 3 cifre vengano letti come stringhe, ad esempio Carattere, Nominale (e senza influenzare il modo in cui le date vengono interpretate utilizzando i formati tradizionali come m/g/y)?
Ri: Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?...e puoi usare date come questa
<<SET date="" filter=""></SET>
<<CreateWindow with pre-populated date range<<CreateWindow with pre-populated date range<
Ri: Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?Sono contento che funzioni per te!
La sintassi ha tre scopi: ricordare lo stato completo della finestra di dialogo se si desidera riavviare la finestra di dialogo con valori precompilati, eseguire l'importazione e mostrare le possibilità. I filtri sono un esempio di tutto ciò:
<<SET name="" filter=""></SET>
Confrontandolo con il dialogo,
using <<CreateWindow instead of <<ImportDatausing <<CreateWindow instead of <<ImportDatautilizzando <<
nella finestra di dialogo sono presenti caselle di controllo che abilitano e disabilitano il filtro. Sopra, il filtro del nome è abilitato e i filtri delle dimensioni e della data non sono in uso. I valori nei filtri dimensione e data sono (1) gli ultimi valori sperimentati oppure (2) l'intervallo di dimensioni e l'intervallo di date del file selezionato. Molto probabilmente (2). Quindi il tuo file è probabilmente lungo 100 byte. Il numero è un valore data-ora JMP, puoi utilizzare qualcosa come asdate( 3666002110.40841 ) ottenere
02 marzo 2020:13:55:10
Puoi eliminare quelle righe e (probabilmente) molte altre dallo script; sono per lo più valori predefiniti che mostrano come utilizzare MFI.
Infine, cosa sta realmente facendo lo script: la funzione MFI(...) restituisce un oggetto. Il << Importa dati Il metodo alla fine dice all'oggetto di importare effettivamente i dati. C'è un esempio nell'indice degli script che mostra << Crea finestra come un altro metodo. L'oggetto IFM viene utilizzato immediatamente e poi distrutto nel file << Importa dati caso. Nel << Crea finestra caso l'oggetto IFM non viene distrutto finché la finestra non si chiude. Puoi anche usare xyz = MultipleFileImport(...); e inviare messaggi alla variabile xyz (incluso Importa dati E Crea finestra ); l'oggetto non verrà distrutto finché la variabile non verrà cancellata. ShowProperties(xyz) elencherà i messaggi nella finestra di registro; sono usati anche nella sceneggiatura.
Ri: Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?CIAO @Craige_Hales ,
Grazie mille per il suggerimento! Ho implementato Importazione di più file e l'ho testato pesantemente; Non riesco a trovare alcun problema e viene letto a 3 cifre Versione colonna (e altre simili) con i delimitatori intatti, ma legge comunque le date correttamente.
Dalla fonte prodotta dal manuale Importazione di più file , ho ottenuto quanto segue:
Multiple File Import(
<<SET folder=""></SET>
Per integrarlo nella mia funzione di importazione (che accetta il file sentiero come parametro), dovevo solo popolare correttamente i primi due metodi:
Convert_csv_to_jmp = Function( {path},
:
:
// determine folder and file args for Multiple File Import function.
lastSlash = Contains( path, "/", -1 );
dir = Substr( path, 1, lastSlash );
If( Length(dir) == 0,
dir = "./";
);
file = Substr( path, lastSlash+1 );
Write( "Path: ", dir, "\!nFile: ", file, "\!n" );
Multiple File Import(
<<SET folder=""></SET>Apprezzerei se qualcuno della comunità potesse collegarsi ad una buona documentazione su questa funzione. Vorrei capire cosa fanno tutti i metodi. Per esempio, Imposta il filtro data sembra volere alcuni argomenti molto arcani.
Ri: Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?Utilizza l'importazione di più file. Non tenterà di indovinare i formati della data. Importerà un file alla volta se è tutto ciò che selezioni, ma in realtà è mirato a importare un gruppo di file simili da una cartella. Guarda lo script di origine da un'importazione manuale se devi ripetere il processo.
Ri: Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?Ciao Cameron,
Grazie per la vostra risposta. Secondo il tuo suggerimento, nell'ultima schermata di importazione, ho potuto fare clic sull'icona a sinistra della freccia rossa per cambiarla da una colonna di dati numerici a una colonna di dati di carattere. Detto questo, ha importato i dati come li desideravo.

La fonte di questo mi ha dato quanto segue:
Open(
"<SPAN>/Users/st/src/analysis_jmp/</SPAN>testVer.csv",
columns(
New Column( "Product", Character, "Nominal" ),
New Column( "Station", Character, "Nominal" ),
New Column( "Version", Character, "Nominal" ),
New Column( "Date",
Numeric,
"Continuous",
Format( "m/d/y", 10 ),
Input Format( "m/d/y" )
)
),
Ciò lo indica è possibile impostare i tipi di colonna prima di aprire un file CSV. Tuttavia, quando scelgo come target solo la colonna Versione all'interno del mio script JSL, le cose vanno in tilt – (forse un bug JSL??).
La mia sceneggiatura:</CODE></P><P> </P><PRE><CODE class=" language-jsl">path = "./verTest.csv";<BR />dt = Open(
path,
columns(
New Column( "Version", Character, "Nominal" )
),
Fonte risultante:
Open(
"/Users/st/src/analysis_jmp/verTest.csv",
columns(<BR /> New Column( "Product", Character, "Nominal" )<BR /> ),
Pertanto, sembra che l'importatore ignori il nome nella specifica Nuova colonna e li prenda semplicemente in ordine di apparizione nel file ('Prodotto' è il primo – ho aggiunto una seconda Nuova colonna con risultati simili rafforzando così questa ipotesi) .
Anche se funzionasse, si presumerebbe che conoscessi il nome della colonna prima dell'importazione (cosa che non so). In alcuni casi lo faccio, quindi potrei almeno applicare questa logica (supponendo che funzioni) per quelli; ma alla fine ne avrei persi alcuni.
Speravo che potesse esserci un'opzione di importazione che limitasse o vincolasse il modo in cui le date vengono interpretate in generale (in modo che i caratteri "." non siano considerati come delimitatori m/g/y, ad esempio).
Ri: Come posso impedire che i numeri di versione a 3 cifre vengano letti come date nella tabella dati?CIAO @SteveTerry ,
Quando apri il file .csv da JMP, dovresti avere alcune opzioni nella finestra di navigazione (almeno per Windows.Non ho un Mac).Scegli Dati (utilizzando l'anteprima) e avrai l'opportunità di impostare manualmente i formati per le colonne importate.Ecco come appare in Windows:

Quando fai clic su Apri, verrà visualizzata una serie di schermate di dialogo per impostare i parametri per l'importazione.Nella seconda schermata, puoi fare clic nella parte superiore dell'anteprima accanto all'intestazione che desideri modificare e assicurarti che quella colonna venga importata come colonna di caratteri.Una volta importato nel modo desiderato, puoi semplicemente copiare lo script Source dalla tabella e riutilizzarlo in futuro per automatizzare l'importazione.