Speichern von Datentabellen aus open () in eine ListeHallo,
Ich möchte das Schlüsselwort open () verwenden, um mehrere Arbeitsblätter zu öffnen und diese Daten in einer Liste zu speichern.
Tables = {};
//normaly I would like to use a for loop here, however the number of worksheets will vary.
Tables = Open ("pathway",
invisible, info about the data..);
//do something with the tables
for (i = 1, i <= NITEMS(Tables), i++,
close(Tables[i], nosave);
);
Zusatzfrage:
Ist es auch möglich, eine mit Benutzernamen / Passwort geschützte Suchmaschine / Bibliothek zu verwenden, um Informationen zu jmp zu suchen und herunterzuladen?
Mit freundlichen Grüßen
Anders
Re: Speichern von Datentabellen von open () in eine ListeHallo,
ja meine Liste sieht so aus.
Ich habe das Problem gelöst, indem ich eine while-Schleife (file = Tables) implementiert habe. Wenn ich zwei Schleifen hatte, die auf dieselbe Liste verweisen, konnte JMP meine Referenzen nicht finden. Mir scheint, dass Tables außerhalb Ihrer Schleife deklariert wird, indem Sie sagen, dass Tables = repeat (....) gilt. Selbst wenn ich Tables = {} außerhalb Ihrer Schleife deklariere, kann es immer noch nicht von meiner zweiten for-Schleife angesprochen werden . Kennen Sie den Grund dafür?
f = N Artikel (Flist)
Während ( f > 0 .
ich = 1 ;
dt = Öffnen (
mein Weg || flist [ f ] .
Importeinstellungen (
Ende der Linie ( CRLF . CR . LF ) .
Ende des Feldes ( Andere ( ";" ) . CSV ( 0 ) ) .
Zitate streichen ( 1 ) .
Verwenden Sie Apostrophe als Anführungszeichen ( 0 ) .
Ganze Datei scannen ( 1 ) .
Leere Spalten als numerisch behandeln ( 0 ) .
CompressNumericColumns ( 0 ) .
CompressCharacterColumns ( 0 ) .
CompressAllowListCheck ( 0 ) .
Etiketten ( 1 ) .
Spaltennamen Start ( 1 ) .
Datenbeginn ( 2 ) .
Zeilen zum Lesen ( "Alles" ) .
Jahresregel ( "20xx" )
) .
) ;
Datei [ ich ] = dt ;
ich = ich + 1 ;
f--;
....
);
Re: Speichern von Datentabellen von open () in eine ListeIch habe meinen Code mit .csv-Dateien ausprobiert und er funktioniert (JMP 12.2 für Mac). Es funktioniert auch mit unsichtbaren Dateien.
Das Tabellen Liste sollte ungefähr so aussehen:
Show ( Tabellen )
/ *:
Tabellen = {DataTable ("Data 1"), DataTable ("Data 2"), DataTable ("Data 3")};
Stellen Sie sicher, dass die CSV in JMP ordnungsgemäß als Datentabelle geöffnet wird (vorübergehend deaktivieren) unsichtbar ) und dass die Tabelle in einem vorherigen Vorgang nicht geschlossen wurde.
Re: Speichern von Datentabellen von open () in eine ListeHallo,
Ich habe versucht, diesen Code in andere Abschnitte meines Skripts zu integrieren. Ich kann jedoch nicht dt = Tables [i] oder dt = Data Table (Tables [i]) erhalten, um auf meine Tabellen in Tables zu verweisen. Siehe unten für Beispiele:
// Ich habe Ihren Code verwendet, um alle Dateien in einem bestimmten Verzeichnis zu öffnen. Beim Debuggen sehe ich, dass Tables einen Verweis auf meine CSV-Dateien enthält. Dieser Teil scheint also zu funktionieren
für (i = 1, i <= N ITEMS (Tabellen), i ++,
dt = Datentabelle ( Tabellen [ ich ] ) ; // JMP kann die Referenz für keine Tabelle in Tabellen finden. dt = Tables [i] funktioniert auch nicht.
dt << Neue Spalte ( "Signal" ) ;
dt << Ausgewählte Spalten verschieben ( { "Signal" } . Zum ersten ) ;
: Signal << Datentyp ( Charakter ) ;
col = Säule ( 1 ) ;
dt << Neue Spalte ( "Quelltabelle" . Charakter ) ;
: Quelltabelle << Legen Sie jeden Wert fest ( dt << Name abrufen () ) ;
dt << Ausgewählte Spalten verschieben ( { "Quelltabelle" } . Zum ersten ) ;
Re: Speichern von Datentabellen von open () in eine ListeDanke für ihre schnelle Antwort. Es ist ein sehr eleganter Code und es hat mein Problem perfekt gelöst, danke.Re: Speichern von Datentabellen von open () in eine ListeIch denke, dass eine Schleife erforderlich ist, um die Liste zu erstellen. Das Dateien im Verzeichnis () Funktion ist nützlich, wenn die Anzahl der Dateien variiert und sich alle in demselben Verzeichnis befinden.
Ein Beispiel:
// Define path and file type
mypath = "path";
ftype = ".jmp";
// Make list of files, remove all non-matching files
flist = Files In Directory(mypath);
For(i = N Items(flist), i > 0, i--,
If(!Ends With(flist[i], ftype),
Remove From(flist, i)
)
);
// Open and create list of tables
Tables = Repeat(
i = 0;
{i++ ; Open(mypath || flist[i])};,
N Items(flist)
);
//do something with the tables
For(i = 1, i <= N Items(Tables), i++,
Close(Tables[i], No Save)
);