Importazione dei dati su JmpCIAO,
Sto sviluppando un'analisi JMP per i dati periodici. Ho una macro Excel che genera un nuovo CSV ogni settimana in una cartella particolare. Sono ancora un giocatore molto elementare con JMP, quindi ho sprecato il supporto della comunità per aiutarmi a creare script per eseguire questa attività. Ho provato a cercare in giro ma non ho trovato alcuna soluzione. Il file CSV ha 19 colonne con intestazione. Posso eliminare la riga di intestazione dal CSV se ciò presenta problemi. Qualcuno può aiutarmi con una soluzione di codice per lo script che mi aiuta a importare automaticamente il file nella tabella dei dati principale in JMP in modo da poter eseguire altri script che possono semplicemente valutare i dati.
Ri: Importazione dati in JmpGrazie per la risposta, txnelson. Questo è il contenuto del file di registro relativo ai "Dati sui trend online aggregati". (Questo è il file che si apre quando eseguo lo script)
/*:
//:*/
// This script will concatenate cleaned online data files from APPLIKON controllers to a master table.
// Define function to open .xlsx files
DataUpdate = Function({filepath},
Open(
filepath,
Worksheets( "Data" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
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( "-" )
)
)
);
//Define path to where .xlsx files are stored (location where this script is stored)
path = get default directory();
//Open Running Table (Online Trend Data Aggregated.jmp) - assuming in same directory as .xlsx files (could change path to wherever)
dt_running = Open(path||"Online Trend Data Aggregated.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .xlsx or do not contain "APPLIKON" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".xlsx") == 0 | contains(files[i],"APPLIKON") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = DataUpdate(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
/*:
Scriptable[]Ri: Importazione dati in JmpQuando esegui semplicemente il file, senza utilizzare il debugger, quali istruzioni ricevi nel registro?Ri: Importazione dati in JmpCiao,
Sto cercando la stessa soluzione del poster originale!
Ho copiato lo script e l'ho modificato in base alle mie esigenze (incluso un suggerimento sopra per copiare e incollare lo script di importazione da JMP stesso invece di quello presentato dalla soluzione originale).
...Ma per qualche motivo non funziona.
Lo script apre il file JMP "Online Trend Data Aggregated", quindi si ferma e non fa nulla. Cosa dovrebbe succedere dopo?
Il debugger esegue tutto e l'unico messaggio che ricevo è nell'angolo in alto a destra e dice "Esecuzione del programma terminata"
Qualsiasi intuizione è molto apprezzata. Script di seguito:
// This script will concatenate cleaned online data files from APPLIKON controllers to a master table.
// Define function to open .xlsx files
DataUpdate = Function({filepath},
Open(
filepath,
Worksheets( "Data" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
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( "-" )
)
)
);
//Define path to where .xlsx files are stored (location where this script is stored on a network drive)
path = get default directory();
//Open Running Table (Online Trend Data Aggregated.jmp) - assuming in same directory as .xlsx files (could change path to wherever)
dt_running = Open(path||"Online Trend Data Aggregated.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .xlsx or do not contain "APPLIKON" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".xlsx") == 0 | contains(files[i],"APPLIKON") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = DataUpdate(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
Ri: Importazione dati in Jmp@cwillden
Ha funzionato a meraviglia, apprezzo davvero il tuo supporto. Questo è stato in grado di gestire centinaia di migliaia di righe che ho in file CSV univoci in pochi secondi, grazie!!!Ri: Importazione dati in JmpEcco un esempio di come potresti farlo.Supponiamo che il file CSV contenga 2 colonne, X1 e X2.Creo 2 file CSV di esempio ("3-29-18 - My Data.csv" e "4-5-18 - My Data.csv").Ho anche una tabella jmp in esecuzione che ho salvato nella stessa directory dei file CSV.
Il seguente script cercherà tutti i file nella directory, filtrerà eventuali file non CSV e file senza "I miei dati" nel nome del file.Quindi acquisisce la data più recente dei file già importati nella tabella in esecuzione.Quindi scorre l'elenco dei file che soddisfano i criteri precedenti ed estrae le date dal nome del file.Se la data è maggiore della data massima della tabella in esecuzione, inserisce il file in un elenco di file da aggiungere alla tabella in esecuzione.
Successivamente, scorre i file che abbiamo stabilito debbano essere aggiunti aprendoli prima, quindi aggiungendo una colonna Data file e quindi concatenando il file alla tabella in esecuzione.
//Define function to open up your CSV files - will need to be modified for your own CSV file
MyCSVImporter = Function({filepath},
Open(
filepath,
columns(
New Column( "X1", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "X2", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
//Define path to where csv files are stored
path = "$DOCUMENTS/temp/";
//Open Running Table (RunningTable.jmp) - assuming in same directory as CSV files (could change path to wherever)
dt_running = Open(path||"RunningTable.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .csv or do not contain "My Data" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".csv") == 0 | contains(files[i],"My Data") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"<BR />
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
<BR />//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = MyCSVImporter(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
In questo esempio, RunningTable contiene già i dati 3-29-18, quindi aggiungerà solo i dati 4-5-18.
Ri: Importazione dati in JmpGrazie!
@uday_guntupalli sì, i dati saranno sempre nello stesso formato, stesso numero di colonne e stesse intestazioni.
Ho già importato dati in JMP una volta. La domanda è ottenere questi dati aggiornati automaticamente settimanalmente dal nuovo file CSV che verrà generato. Ogni settimana verrà generato un nuovo file CSV con il nome file " - I miei dati". Sto cercando di far sì che JMP importi ogni volta questi dati nel mio file principale. Come è possibile scrivere il comando affinché JMP vada automaticamente in una directory di cartelle e selezioni il file più recente dall'elenco, importi tali dati e li modifichi nella tabella in esecuzione.
Ri: Importazione dati in JmpSolo una precisazione in merito @uday_guntupalli risposta:
Fornirà un'interfaccia come questa. Potresti voler scegliere "Dati con anteprima" in modo da essere consapevole di ciò che stai importando e poterlo personalizzare. Una volta completata l'importazione, vai alla tabella dei dati importati.Guarda nel pannello Tabella a sinistra della visualizzazione della tabella dati. Fare clic con il tasto destro sul triangolo verde davanti alla voce "Sorgente", verrà fornita un'opzione per "modificare" in cui è possibile vedere lo script generato da JMP.Potrai quindi tagliare e incollare lo script all'inizio per lo sviluppo del tuo script settimanale.
Ri: Importazione dati in JmpCIAO @NilD ,
JMP genererà lo script per te se puoi importarlo manualmente la prima volta.La tabella risultante avrà uno script "Sorgente" che mostra esattamente come importare i dati utilizzando JSL.
Se JMP non importa correttamente il file .csv, procedi come segue.Esegui File > Apri (o Ctrl + O) come al solito (modificando i tipi di file nella finestra Apri file dati in "File di testo" se necessario), vai al file .csv e selezionalo.Prima di aprire il file .csv, dovresti vedere alcuni pulsanti di opzione che ti offrono diverse opzioni per l'apertura del file.Uno è "Dati con anteprima".Selezionandolo avrai l'opportunità di modificare le impostazioni di importazione prima di importare i dati in JMP.

Ri: Importazione dati in Jmp@NilD ,
I file saranno sempre nello stesso formato? cioè stessi nomi di colonne e stesso tipo di dati al loro interno?
Il modo più semplice è fare in modo che JMP fornisca lo script per importare il file, in modo da poter personalizzare le selezioni e riutilizzare lo script.
File ==> Apri ==> Seleziona il file che desideri
Fornirà un'interfaccia come questa. Potresti voler scegliere "Dati con anteprima" in modo da essere consapevole di ciò che stai importando e poterlo personalizzare. Una volta terminato, fare clic sul triangolo verde, verrà fornita un'opzione per "modificare" in cui è possibile vedere lo script generato da JMP
