Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue Tabelle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich habe ein bisschen Probleme beim Kopieren von Spalten aus mehreren Datentabellen in eine neue leere Tabelle. Die zu öffnenden Datentabellen haben alle die gleichen Spaltennamen.
Bisher kann ich mehrere Tabellen öffnen, aber nur Spalten aus einer der zuletzt geöffneten Datentabellen kopieren.
Hier ist mein Code unten:
Namen standardmäßig hierher ( 1 ) ;
// Verwenden Sie 'PickFile()', um eine Liste der zu öffnenden Dateien zu erhalten (nur Windows)
Dateiliste = Datei auswählen (
"Eine oder mehrere Dateien auswählen" , // Eingabeaufforderung
"$DESKTOP" , // Ursprünglicher Ordner
{ "JMP-Dateien|jmp;jsl;jrn;csv" , "Alle Dateien|*" } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anzuwendender anfänglicher Dateifilter (Index des Elements in der obigen Liste)
0 , // Speichern-Flag - Geben Sie entweder ein 'Speichern'- oder ein 'Öffnen'-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
mehrere // Multiple - erlaubt das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
// Wenn nur eine einzelne Datei ausgewählt ist, ist fileList keine Liste, also müssen wir sie selbst erstellen
Wenn ( ! Ist Liste ( Dateiliste ) ,
Dateiliste = Bewertungsliste ( { Dateiliste } )
) ;
// Öffnen Sie die Dateien und speichern Sie ihre entsprechenden JMP-Tabellennamen
Tabellennamen = {} ;
Für ( F = 1 , F <= N Artikel ( Dateiliste ) , F ++,
dt = Offen ( Dateiliste [ F ] ) ;
Einfügen in ( Tabellennamen , dt << getName ) ;
) ;
//Create Column Copier zum Kopieren von Dateien
col_dlg = neues Fenster ( "Spaltenkopierer" ,
Schaltschrank ( "Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:" ,
col_clist = Sammelbox ( alle , Breite ( 200 ) , maximal ausgewählt ( 4 )) ,
) ,
Knopfkasten ( "OK" ,
selected_column_list = col_clist << wird ausgewählt ;
Spalte1 = selected_column_list [ 1 ] ;
col2 = selected_column_list [ 2 ] ;
col3 = selected_column_list [ 3 ] ;
col4 = selected_column_list [ 4 ] ;
// Erstellen Sie eine neue Tabelle, die nur die beiden ausgewählten Spalten verwendet
dt2 = dt << Teilmenge ( Säulen ( Spalte ( dt , Spalte1 ) , Spalte ( dt , col2 ) , Spalte ( dt , col3 ) , Spalte ( dt , col4 ) ) ) ;
col_dlg << Fenster schließen ;
)
) ;
Hinweis: Die neu erstellte Datentabelle ist eine Teilmenge der letzten Datentabelle, die aus den mehreren Daten t geöffnet wurde fähig. Ich möchte in der Lage sein, jede beliebige Spalte aus einer der Datentabellen in die neue zu kopieren. Danke schön.
Betreff: Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue TabelleVielen Dank, das hat funktioniert. Ich dachte, das war das Problem, nur eine letzte Hilfe. Die Verkettung erfolgte vertikal. Ich versuche, die Datentabelle horizontal zu verketten. Also habe ich "Join" anstelle von "concatenate" verwendet, aber es öffnet 2 separate Datentabellen, anstatt sie miteinander zu kombinieren.
Betreff: Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue TabelleDer Fehler .... der mein Fehler war .... ist in der Zeile
Insert Into( tableNames, dt << getName );
Die Zeile sollte lauten:
Insert into( tableNames, dttemp << getName );
Betreff: Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue TabelleIch habe die Datentabelle überprüft, aber immer noch nur eine geöffnet. Hier ist der Fehler, den ich aus dem folgenden Protokoll erhalten habe:
Name nicht aufgelöst: dt im Zugriff oder Auswertung von 'dt' , dt/*###*/
Im folgenden Skript Fehler markiert mit /*###*/
Namen standardmäßig bis hierher ( 1 );
fileList = Datei auswählen (
„Eine oder mehrere Dateien auswählen“,
"$DESKTOP",
{"JMP-Dateien|jmp;jsl;jrn;csv", "Alle Dateien|*"},
1,
0,
Leer(),
mehrere
);
If( !Ist Liste( fileList ),
fileList = Bewertungsliste( {fileList} )
);
Tabellennamen = {};
For( f = 1, f <= N Items( fileList ), f++,
dttemp = Open( fileList);
Insert Into( tableNames, dt/*###*/ <
Wenn (f == 1,
dt = dttemp,
dt << concatenate( dttemp, an erste Tabelle anhängen( 1 ) );
Close( dttemp, nosave );
);
);
col_dlg = Neues Fenster( "Spaltenkopierer",
Panel Box( "Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:",
col_clist = Col List Box( all, width( 200 ), max selected( 4 ) )
),
Schaltflächenfeld ("OK",
selected_column_list = col_clist << wird ausgewählt;
col1 = selected_column_list[1];
col2 = selected_column_list[2];
col3 = selected_column_list[3];
col4 = selected_column_list[4];
dt2 = dt << Teilmenge(
Säulen(
Spalte( dt, col1 ),
Spalte( dt, col2 ),
Spalte( dt, col3 ),
Spalte( dt, col4 )
)
);
col_dlg << Fenster schließen;
)
Betreff: Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue TabelleIch habe den Code geändert, um jede der 4 Dateien einzulesen und sie an die erste Datei anzuhängen.Daher sollte das Endergebnis sein, dass Sie nur eine Datei haben, in der sich jedoch alle Daten aus jeder der Dateien befinden.
Ich konnte Ihren Code nicht vollständig testen, daher könnte ein kleines Problem vorliegen.Der einzige Code, den ich geändert habe, war in der For-Schleife.Bitte führen Sie den Code erneut aus und schauen Sie dann in das Protokoll View==>Log und sehen Sie, was der Fehler ist.Checken Sie auch die Datentabelle ein und vergewissern Sie sich, dass alle Daten in die Datentabelle gelangt sind.
Betreff: Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue TabelleHallo Jim,
Danke für die Hilfe aber es funktioniert immer noch nicht. Wenn ich diesmal den neuen Code ausführe, wird der Spaltenkopierer nicht angezeigt und die einzige der Dateien, die ich öffnen möchte, wird angezeigt.
Betreff: Kopieren von Spalten, Spaltennamen und Tabellennamen in eine neue TabelleDer folgende Code liest jede Datei ein und verkettet sie dann zu einer Datentabelle, die dann von Ihrem Column Copier verarbeitet wird
Namen standardmäßig hierher ( 1 ) ;
// Verwenden Sie 'PickFile()', um eine Liste der zu öffnenden Dateien zu erhalten (nur Windows)
Dateiliste = Datei auswählen (
"Eine oder mehrere Dateien auswählen" , // Eingabeaufforderung
"$DESKTOP" , // Ursprünglicher Ordner
{ "JMP-Dateien|jmp;jsl;jrn;csv" , "Alle Dateien|*" } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anzuwendender anfänglicher Dateifilter (Index des Elements in der obigen Liste)
0 , // Speichern-Flag - Geben Sie entweder ein 'Speichern'- oder ein 'Öffnen'-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
mehrere // Multiple - erlaubt das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
// Wenn nur eine einzelne Datei ausgewählt ist, ist fileList keine Liste, also müssen wir sie selbst erstellen
Wenn ( ! Ist Liste ( Dateiliste ) ,
Dateiliste = Bewertungsliste ( {Dateiliste} )
) ;
// Öffnen Sie die Dateien und speichern Sie ihre entsprechenden JMP-Tabellennamen
Tabellennamen = {} ;
Für ( F = 1 , F <= N Artikel ( Dateiliste ) , F ++,
dttemp = Offen (Dateiliste);
Einfügen in ( Tabellennamen , dt << getName ) ;
// Die Datentabellen zusammenfügen
Wenn ( F == 1 ,
dt = dttemp ,
dt << verketten ( dttemp , An erste Tabelle anhängen ( 1 ) ) ;
Schließen ( dttemp , nosave ) ;
) ;
) ;
//Create Column Copier zum Kopieren von Dateien
col_dlg = Neues Fenster ( "Spaltenkopierer" ,
Panel-Box ( "Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:" , col_clist = Col Listenfeld ( alle , Breite( 200 ) , max ausgewählt( 4 ) ) , ) ,
Button-Box ( "OK" ,
selected_column_list = col_clist << wird ausgewählt;
Spalte1 = ausgewählte_spaltenliste[ 1 ] ;
col2 = ausgewählte_spaltenliste[ 2 ] ;
col3 = ausgewählte_spaltenliste[ 3 ] ;
col4 = ausgewählte_spaltenliste[ 4 ] ;
// Erstellen Sie eine neue Tabelle, die nur die beiden ausgewählten Spalten verwendet
dt2 = dt << Teilmenge ( Säulen( Spalte (dt , Spalte1 ) , Spalte (dt , Spalte2 ) , Spalte (dt , Spalte3 ) , Spalte (dt , col4 ) ) ) ;
col_dlg << Fenster schließen;
)
) ;