In meinem vorherigen Blogbeitrag JMP und Excel – eine unendliche Geschichte? - Teil 1 Ich endete mit einem Beispiel für den Import von Tabellenkalkulationen mit hierarchischen Überschriften und verbundenen Zellen. Dieses Mal konzentriere ich mich darauf, eine Tabellenkalkulationsdatei mit vielen Arbeitsblättern zu importieren und mehrere Tabellenkalkulationen (die in einem bestimmten Ordner liegen) in JMP zu lesen. Ich möchte es nicht zu kompliziert machen, daher gehe ich davon aus, dass die Struktur und Parameternamen in den Tabellenkalkulationen sowie in den verschiedenen Arbeitsblättern gleich sind!
(Hinweis: Wenn die Einstellungen nicht identisch sind, müssen Sie die Einstellungen für jede Arbeitsmappe angeben und sie als separate Tabellen importieren. Eine anschließende Kombination könnte mithilfe der Join/Concatenate-Funktionen oder des JMP Query Builder für JMP-Datentabellen erfolgen. Wenn Sie diese Art von Schritten automatisieren möchten, ist in der Regel weiteres Skripting erforderlich, um die Rolle für jede Variable, jedes Arbeitsblatt und/oder jede Datei, die Sie einlesen möchten, zu überprüfen.
MEHRERE ARBEITSBLÄTTER – IMPORTIEREN UND AUTOMATISIEREN
Schauen wir uns also zunächst die Daten in Excel an:

Man erkennt die verschiedenen Arbeitsmappen, die alle die gleiche Form und nicht triviale Struktur haben. Rot unterstrichen sind die unterschiedlichen Chargennummern in jeder Arbeitsmappe zu sehen. Ich möchte die Daten einlesen, aber nicht in separaten Tabellen. Ich hätte lieber eine einzige Tabelle und mit dem Excel-Import-Assistenten von JMP ist dies ganz einfach zu erreichen:
- Ziehen Sie die Excel-Tabelle in ein beliebiges JMP-Fenster, um den Excel-Import-Assistenten zu öffnen:

- Nehmen Sie gegebenenfalls Änderungen an den Einstellungen für die Kopf- und Datenfelder vor. Wir haben einen Header, den wir nicht in die Daten aufnehmen möchten, und der eigentliche Header beginnt in Zeile 4 und erstreckt sich über drei Zeilen. Dann gibt es eine Zeile mit leeren Feldern. Deshalb beginnen wir die Daten eine Zeile später (8 statt 7). Die erste Spalte enthält keine Daten für die Analyse, deshalb überspringen wir sie.

- Durch Klicken auf die Schaltfläche „Weiter“ können wir die Einstellung „Letzte Zeile“ verwenden und angeben, dass wir die Zeitstempelinformationen nicht einbeziehen möchten. Wenn Sie die Zeile auswählen, in der die Daten enden, und das Pluszeichen (+) drücken, müssen Sie sich nicht darum kümmern, welche Zeilennummer die richtige ist.

- Der Rest besteht darin, in allen Arbeitsblättern die gleiche Struktur zu verwenden. Wir können die Markierung „Für alle Arbeitsblätter verwenden“ sowie die Markierung „Arbeitsblätter verketten und versuchen, Spalten abzugleichen“ aktivieren. Dadurch wird die Vorschau von 30/30 Zeilen auf 90/90 Zeilen geändert. Wenn man bedenkt, dass jedes der drei Arbeitsblätter 30 Zeilen enthält, scheint dies wie erwartet zu funktionieren. Beim Verketten wird dringend empfohlen, auch das Flag „Spalte mit Arbeitsblattnamen beim Verketten erstellen“ zu aktivieren. Andernfalls lässt sich später nur schwer nachvollziehen, woher die Daten stammen.
- Der letzte Schritt besteht darin, die importierten Daten zu importieren und natürlich immer zu überprüfen
Wenn Sie dies in Aktion sehen möchten, kann ich dies empfehlen kurzes Video (mit JMP 12). Ein Hinweis für den Fall, dass Sie gerade erst mit der Verwendung des Importassistenten begonnen haben: Er speichert die letzte Einstellung, was beim Importieren neuer, aber unterschiedlicher Daten zu überraschenden Ansichten der Daten führen kann. Über den Button „Standardeinstellungen wiederherstellen“ können Sie Ihre Einstellungen im Assistenten zurücksetzen.
In jeder importierten Datentabelle finden Sie ein Quellskript, mit dem Sie den Import mit den zuvor gewählten Einstellungen wiederholen können. Dies ermöglicht das Lesen einer aktualisierten Datentabelle, falls Sie neue Chargendaten in der Tabelle haben. Nun, wenn ich häufig Daten erhebe, würde ich wahrscheinlich die Verwendung von Datenbanken anstelle von Tabellenkalkulationen in Betracht ziehen, aber das ist eine andere Geschichte.
Automatisieren Sie den Import mehrerer Tabellenkalkulationen – eine ganz andere Herausforderung
Jetzt wissen Sie, wie Sie eine Tabelle mit mehreren Arbeitsblättern mit derselben Struktur in JMP einlesen. Möglicherweise standen Sie jedoch auch vor der Herausforderung: „Wie lese ich mehrere Tabellenkalkulationen mit derselben Struktur in JMP ein, ohne dies für jede Datei manuell, also automatisch, zu tun?“ Die kurze Antwort lautet: Verwendung der JMP-Skriptsprache. Wenn Sie das Quellskript als Basis verwenden, können Sie dieses Skript entweder für jede Tabelle erneut ausführen oder eine for-Schleife verwenden, die alle Dateien in einem Ordner durchläuft. Es gibt ein in der Community File Exchange freigegebenes Skript, das Sie (vielleicht mit einigen Anpassungen) verwenden können und das genau Folgendes tut: Kombinieren Sie mehrere TXT- oder CSV-Dateien
Kurz gesagt führen Sie die folgenden Schritte aus (nur Teile des gezeigten Skripts):
- Wählen Sie das Verzeichnis aus und filtern Sie die Dateien, bei denen es sich um Excel-Dateien handelt
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)
)
);
- Durchlaufen Sie die Dateien und importieren Sie sie. Um Speicherplatz zu sparen, öffnen Sie einfach zwei und aktualisieren Sie die erste importierte Tabelle mit der neuen, schließen Sie letztere und öffnen Sie die nächste. Andernfalls kann es unter Windows aufgrund der Anzahl der verwendeten Fensterhandles und des verwendeten Speichers (bei vielen oder sehr großen Tabellenkalkulationen) zu Problemen kommen.
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
Bisher haben Sie über verschiedene Möglichkeiten zum Importieren trivial strukturierter Daten sowie über den Umgang mit hierarchischen und/oder zusammengeführten Datensätzen mithilfe des Excel-Importassistenten in JMP gelesen. Abschließend habe ich Ihnen Möglichkeiten gezeigt, mehrere Arbeitsblätter gleichzeitig zu importieren und mehrere Excel-Tabellen mit einem JSL-Skript automatisch zu lesen. In meinem nächsten Beitrag werde ich über mögliche Herausforderungen sprechen, die auf dem Format der Daten und anderen Faktoren basieren.
Ich freue mich auf eure Kommentare und geteilten Erfahrungen.