Nel mio precedente post sul blog JMP ed Excel: una storia infinita? - Parte 1 Ho concluso con un esempio di importazione di fogli di calcolo con intestazioni gerarchiche e celle unite. Questa volta mi concentro sull'importazione di un file di foglio di calcolo con molti fogli di lavoro e sulla lettura di più fogli di calcolo (che si trovano in una cartella specifica) in JMP. Non voglio renderlo eccessivamente complicato, quindi presumo che la struttura e i nomi dei parametri nei fogli di calcolo e nei diversi fogli di lavoro siano gli stessi!
(Nota: se non sono le stesse, dovresti specificare le impostazioni per ciascuna cartella di lavoro e importarle come tabelle separate. È possibile combinarli successivamente utilizzando le funzionalità di unione/concatenazione o JMP Query Builder per le tabelle di dati JMP. Se si desidera automatizzare questo tipo di passaggi, in genere sono necessari ulteriori script per verificare il ruolo di ogni variabile, foglio di lavoro e/o file che si desidera leggere).
FOGLI DI LAVORO MULTIPLI - IMPORTA E AUTOMATIZZA
Quindi diamo prima un'occhiata ai dati in Excel:

Si possono vedere i diversi quaderni di lavoro, tutti aventi la stessa forma e struttura non banale. Sottolineati in rosso si possono vedere i diversi numeri di lotto su ciascuna cartella di lavoro. Voglio leggere i dati ma non in tabelle separate. Piuttosto mi piacerebbe avere un'unica tabella e utilizzando l'importazione guidata di Excel di JMP questo è abbastanza semplice da ottenere:
- Trascinando il foglio Excel in qualsiasi finestra JMP si aprirà l'importazione guidata di Excel:

- Apporta modifiche alle impostazioni per l'intestazione e i campi dati, ove appropriato. Abbiamo un'intestazione che non vogliamo includere nei dati e l'intestazione effettiva inizia alla riga 4 e si estende su tre righe. Poi c'è una riga con campi vuoti. Pertanto iniziamo i dati una riga dopo (8 invece di 7). La prima colonna non contiene dati per l'analisi, ecco perché la saltiamo.

- Facendo clic sul pulsante "Avanti" possiamo utilizzare l'impostazione Ultima riga, indicando che non vogliamo includere le informazioni sul timestamp. Selezionando la riga dove finiscono i dati e premendo il segno più (+) non devi preoccuparti di quale numero di riga sia quello corretto.

- Il resto è utilizzare la stessa struttura in tutti i fogli di lavoro. Possiamo selezionare il marcatore "Utilizza per tutti i fogli di lavoro" e "Concatena i fogli di lavoro e prova ad abbinare le colonne". Ciò cambierà l'anteprima da 30/30 righe a 90/90 righe. Considerando che ciascuno dei tre fogli di lavoro fornisce 30 righe, sembra che funzioni come previsto. Quando si concatena, si consiglia vivamente di selezionare anche il flag "Crea colonna con nome foglio di lavoro durante la concatenazione". Altrimenti sarà difficile riflettere in seguito sulla provenienza dei dati.
- L'ultimo passaggio è importare e ovviamente controllare sempre i dati importati
Se vuoi vederlo in azione, posso consigliarlo breve video (utilizzando JMP 12). Una nota nel caso in cui tu abbia appena iniziato a utilizzare l'Importazione guidata: salverà l'ultima impostazione, il che potrebbe portare a visualizzazioni sorprendenti dei dati, quando si importano dati nuovi ma diversi. Utilizzando il pulsante "Ripristina impostazioni predefinite" è possibile ripristinare le impostazioni nella procedura guidata.
In ogni tabella dati importata troverai uno script sorgente per ripetere l'importazione con le impostazioni che hai scelto in precedenza. Ciò consente di leggere una tabella dati aggiornata, nel caso in cui siano presenti nuovi dati batch nel foglio di calcolo. Bene, quando raccolgo dati frequentemente probabilmente prenderei in considerazione l'utilizzo di database anziché fogli di calcolo, ma questa è una storia diversa.
IMPORTAZIONE AUTOMATIZZATA DI PIÙ FOGLI DI CALCOLO - SFIDA DIVERSA
Ora sai come leggere in JMP un foglio di calcolo con più fogli di lavoro con la stessa struttura. Tuttavia, potresti anche aver affrontato la sfida "Come faccio a leggere più fogli di calcolo con la stessa struttura in JMP senza farlo manualmente per ciascun file, ovvero farlo automaticamente. La risposta breve, utilizzando il linguaggio di scripting JMP. Utilizzando lo script sorgente come base è possibile eseguire nuovamente questo script per ogni foglio di calcolo oppure utilizzare un ciclo for per scorrere tutti i file in una cartella. Esiste uno script condiviso nella comunità File Exchange che potresti utilizzare (magari con alcune modifiche), che fa esattamente questo: Combina più file txt o csv
In breve esegui i seguenti passaggi (solo parti dello script mostrato):
- Scegli la directory e filtra i file che sono file Excel
prefilepath = munger(Pick Directory( "Browse to the Directory of the Target Excel Files " ),1,"/","");
filepath = Convert File Path( prefilepath, Windows );
prefilelist = Files In Directory( filepath );
n2=nitems(prefilelist);
//filter out any non-Excel files
For( i2 = 1, n2 >= i2, i2++,
file=(prefilelist[i2]);
If( Item( 2, prefilelist[i2], "." ) == "xls" | Item( 2, prefilelist[i2], "." ) == "xlsx",
Insert Into( filelist,file),
//show(file)
)
);
- Passa in rassegna i file e importali. Per risparmiare memoria apritene solo due e aggiorna la prima tabella importata con quella nuova, chiudi quest'ultima e apri la successiva. Altrimenti potresti avere problemi su Windows a causa del numero di handle di finestra utilizzati e della memoria utilizzata (in caso di fogli di calcolo molti o molto grandi.
n=nitems(filelist); //number of items in the working list
cctable= New Table( "Combined data table");//make an empty table
ExcelSheetName = "Sheet1"; // change this if you have a special sheet name you want to read the data from
//Iterate through building the SQL string to query the Excel files
For( i = 1, i < n+1, i++,
filenow = ( filelist[i] );
fileopen=(filepath||filenow);
dt=open(fileopen, Worksheets( ExcelSheetName ) );
dt << New Column( "File Name", formula( filenow ) );
cctable << Concatenate( Data Table( dt ), Append to first table );
Close( dt, NoSave );
);//end of for loop
Finora hai letto diversi modi per importare dati strutturati banali, nonché come gestire set di dati gerarchici e/o uniti utilizzando l'importazione guidata di Excel in JMP. Infine ti ho mostrato come importare più fogli di lavoro contemporaneamente e come leggere automaticamente più fogli Excel con uno script JSL. Nel mio prossimo post parlerò delle potenziali sfide basate sul formato dei dati e altro.
Aspetto con ansia i vostri commenti e le vostre esperienze condivise.