Skript zum Verketten aller CSV-Dateien in einer JMP-TabelleHallo!
Mein aktuelles Skript zum Öffnen eines Verzeichnisses, das CSV-Dateien enthält und diese in einer Master-Datei verkettet, funktioniert nicht, und ich hatte gehofft, Einblicke in die Gründe dafür zu erhalten. Ich habe bereits die Variablen dir und Dateien angegeben, und die Schleife scheint zu enden, nachdem die erste Datei erstellt wurde, wenn sich 4 im Ordner befinden. Gibt es auch ein Skript, um den Dateinamen der CSV-Datei zu lesen und damit eine neue Spalte zu füllen?
Zum (i = 1 ich < N Artikel (Dateien), i ++,
thisTable = Öffnen (dir || Dateien [i]);
// erstellt eine neue Spalte, um die SD-ID anzugeben
Neue Spalte ( "EX801.SD.ID" , Zeichen, Mehrfachnennung);
Für jede Reihe (: EX801.SD.ID = "Run1" ); // bei der Eingabe der SD-ID stecken - Dateiname erforderlich!
dieseTabelle << Ausgewählte Spalten verschieben ({: EX801.SD.ID}, An erster Stelle);
// löscht Spalten "...... PV"
Zum (i = N Cols (dieseTabelle), i> 32 , ich--, // 1. 32 Spalten werden benötigt
dieseTabelle << Spalten löschen ( Säule (ich));
);
// fügt vor jedem Spaltennamen ein "I" ein, das später mit dem Spaltennamen abgeglichen werden soll
Zum (i = 3 , ich <= 32 , i ++,
Säule (thisTable, i) << Name einsetzen ( "ICH" || ( Säule (thisTable, i) << Name abrufen ));
);
dt << Verketten (dieser Tisch, "An erste Tabelle anhängen" );
Schließen (thisTable);
dt << Wählen Sie wo ( Wird vermisst (: ZEIT)) << Zeilen löschen ;
);
Re: Skript zum Verketten aller CSV-Dateien in einer JMP-TabelleVielen Dank für diese Option! Nach dem Import der Dateien scheint es jedoch nicht möglich zu sein, sie mit einem Schleifenskript zu säubern. Irgendwelche Vorschläge, warum das so ist?
// csv-Dateien aus dem ausgewählten Ordner importieren
thisTable = Import mehrerer Dateien (
<< Ordner einstellen (dir),
<< Namensfilter einstellen ( "*. *;" )
<< Set Name Enable ( 0 )
<< Größenfilter einstellen ({ 254056 . 261197 }),
<< Set Size Enable ( 0 )
<< Datumsfilter einstellen ({ 3632893806 . 3633422386 }),
<< Set Date Enable ( 0 )
<< Legen Sie die Spalte Dateiname hinzufügen fest ( 1 )
<< Legen Sie die Spalte zum Hinzufügen der Dateigröße fest ( 0 )
<< Legen Sie Datumsspalte für Datei hinzufügen fest ( 0 )
<< Importmodus einstellen ( "CSVData" )
<< Zeichensatz festlegen ( "Beste Annahme" )
<< Stapelmodus einstellen ( "Stapelähnlich" )
<< Legen Sie CSV-Kopfzeilen fest ( 1 )
<< Legen Sie CSV-Zulassungsnummer fest ( 1 )
<< Legen Sie die erste Kopfzeile für CSV fest ( 1 )
<< Legen Sie die Anzahl der CSV-Headerzeilen fest ( 1 )
<< Legen Sie die erste Datenzeile für CSV fest ( 2 )
<< Setzen Sie das CSV-EOF-Komma ( 1 )
<< Legen Sie die Registerkarte CSV-EOF fest ( 0 )
<< Stellen Sie den CSV-EOF-Space ein ( 0 )
<< Legen Sie die CSV-EOF-Bereiche fest ( 0 )
<< Stellen Sie CSV EOF Other ein ( "" )
<< Stellen Sie CSV EOL CRLF ein ( 1 )
<< Stellen Sie CSV EOL CR ein ( 1 )
<< Stellen Sie CSV EOL LF ein ( 1 )
<< Legen Sie das CSV-EOL-Semikolon fest ( 0 )
<< Stellen Sie CSV EOL Other ein ( "" )
<< Legen Sie das CSV-Angebot fest ( "\!" " )
<< Stellen Sie CSV Escape ein ( "" )
) << Daten importieren ;
dieseTabelle << Ausgewählte Spalten verschieben ({: Dateiname}, An erster Stelle);
// löscht Spalten "...... PV" // hier stecken
Zum (k = N Cols (dieseTabelle), k> 32 k-- // 1. 32 Spalten werden benötigt
dieseTabelle << Spalten löschen ( Säule (k));
);
Re: Skript zum Verketten aller CSV-Dateien in einer JMP-TabelleIhr Problem ist, dass Sie die Variable "i" in zwei For-Loops verwenden, wobei sich eine For-Schleife innerhalb der anderen befindet. Daher wird Ihr Wert für "i" für die äußere Schleife nicht ordnungsgemäß erhöht.
Ich habe die Loop-Variable für die inneren Schleifen im folgenden Skript geändert. Dies könnte Ihre Lösung sein
For( i = 1, i < N Items( files ), i++,
thisTable = Open( dir || files[i] );
// creates new column to indicate SD ID
New Column( "EX801.SD.ID", Character, Multiple Response );
For Each Row( :EX801.SD.ID = "Run1" ); // stuck at inputing SD ID - need file name!
thisTable << Move Selected Columns( {:EX801.SD.ID}, To First );
// deletes columns "......PV"
For( k = N Cols( thisTable ), k > 32, k--, // 1st 32 columns are needed
thisTable << delete columns( Column( k ) );
);
// adds "I" in front of each column name to be matched with column name later
For( k = 3, k <= 32, k++,
Column( thisTable, k ) << Set Name( "I" || (Column( thisTable, k ) << Get Name) );
);
dt << Concatenate( thisTable, "Append to First Table" );
Close( thisTable );
dt << Select Where( Is Missing( :TIME ) ) << Delete Rows;
);
Wenn Sie JMP 14 verwenden, können Sie möglicherweise die Funktion Multiple File Import () verwenden.
Re: Skript zum Verketten aller CSV-Dateien in einer JMP-TabelleWählen Sie Datei> Import mehrerer Dateien. Weitere Informationen finden Sie unter Hilfe> Verwenden von JMP. Alle Optionen können mit einem Skript erstellt werden. Verwenden Sie es beim ersten Mal interaktiv, um sicherzustellen, dass Sie die Ergebnisse in einem bekannten Fall erhalten. Kopieren Sie dann das Source-Tabellenskript in Ihr eigenes Skript.