Geben Sie Spalten aus separaten Datentabellen an<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich beabsichtige, ein Skript zu schreiben, das Werte aus einer Spalte in Datentabelle 1 mit den am besten übereinstimmenden Werten aus einer Spalte in Datentabelle 2 abgleicht. Ist es möglich, eine JSL-Plattform zu schreiben, um Eingaben aus zwei verschiedenen Datentabellen zu ermöglichen?Wenn nicht, kennt jemand einen guten alternativen Ansatz?
Betreff: Spalten aus separaten Datentabellen angebenDanke Jim!
Betreff: Spalten aus separaten Datentabellen angebenN Table() gibt die Anzahl der geöffneten Datentabellen zurück.
Sie können sie durchlaufen, um ihre Namen zu erhalten
For(I=1, I<= N Table(),I++,
show(data table(I)<
);
Betreff: Spalten aus separaten Datentabellen angebenDanke Jim.Kennen Sie eine Funktion, die eine Liste offener Datentabellen zurückgibt?
Betreff: Spalten aus separaten Datentabellen angebenEs gibt keine Einschränkung beim Füllen von 2 Col List Box()s aus verschiedenen Datentabellen im selben Anzeigefenster.Wenn Sie zu Hilfe==>Skriptindex gehen und sich das dritte Beispiel für das Anzeigefeld, Col List Box(), ansehen, sehen Sie ein Beispiel, das die Spalten einer Datentabelle anzeigt und Ihnen die Auswahl einer Spalte ermöglicht.Dieses Beispielskript kann leicht erweitert werden, sodass es im selben Anzeigefenster angezeigt wird, indem Sie den Code duplizieren, aber den „dt“-Verweis auf Ihre Referenzvariable in Ihre zweite Datentabelle ändern.
Betreff: Spalten aus separaten Datentabellen angebenHallo Jim,
In meinem endgültigen Skript möchte ich eine erstellen Plattform, die zu einem Add-In hinzugefügt werden kann, sodass der Benutzer über eine Schnittstelle zur Auswahl von Spalten sowohl aus dt1 als auch aus dt2 verfügt. Ist das möglich?Wenn nicht, kennen Sie eine Problemumgehung?
// Beispielplattformeingabe.
Namen standardmäßig hier ( 1 ) ;
dt = Aktuelle Datentabelle () ;
Neues Fenster ( „Nach nächster Übereinstimmung zusammenführen“ ,
<< Modal ,
Textfeld ( „Eingabe auswählen“ ) ,
H-Listenfeld (
Panel-Box ( „Wählen Sie die dt1-Spalte aus“ , getCols = Col-Listenfeld ( dt , Alle ) ) , // Spalten von dt1 abrufen.
// Fügen Sie ein Skript hinzu, um auch Spalten von dt2 abzurufen.
V-Listenfeld (
Panel-Box ( „dt1-Spalte“ ,
Aufstellungsbox ( N Col ( 2 ) ,
Button-Box ( „dt1-Spalte“ , Spalten1 << Anhängen ( getCols << Werden Sie ausgewählt ) ) ,
Spalten1 = Col-Listenfeld ( N-Linien ( 1 ) , Maximale Anzahl an Artikeln ( 1 ) , Numerisch )
)
) ,
Panel-Box ( „dt2-Spalte“ ,
Aufstellungsbox ( N Col ( 2 ) ,
Button-Box ( „dt2-Spalte“ , Spalten2 << Anhängen ( getCols << Werden Sie ausgewählt ) ) ,
Spalten2 = Col-Listenfeld ( N-Linien ( 1 ) , Maximale Anzahl an Artikeln ( 1 ) , Numerisch )
)
)
)
)
) ;
Betreff: Spalten aus separaten Datentabellen angebenHallo Jim,
Vielen Dank für das Skript; Ich werde es wahrscheinlich in meiner Implementierung verwenden.Ich habe ein paar Zeilen hinzugefügt, um Fälle zu berücksichtigen, in denen die Werte in dt1 außerhalb der Werte von dt2 liegen.
Namen standardmäßig hier ( 1 ) ;
// Eine Beispieldatentabelle öffnen
dt = Offen ( „$SAMPLE_DATA/semiconductor Capability.jmp“ ) ;
// Erstellen Sie ein paar Datentabellen, um zu zeigen, wie Suchvorgänge durchgeführt werden
// an mehrere Tabellen
dt1 = dt << Teilmenge ( ausgewählte Zeilen ( 0 ) , Säulen ( npn1 ) ) ;
dt2 = dt << Teilmenge ( ausgewählte Zeilen ( 0 ) , Säulen ( npn2 ) ) ;
Schließen ( dt , nosave ) ;
// Sortieren Sie die Tabelle, um die nächstgelegenen Werte zu finden
dt2 << Sortieren ( von ( NPN2 ) , Tisch ersetzen ( 1 ) ) ;
// Erstellen Sie eine Spalte in der ersten Tabelle, um die Zeilennummer zu speichern
// aus der zweiten Tabelle, die ihm am nächsten liegt
dt1 << Neue Spalte ( „Zeilennummer am nächsten“ ) ;
// Erstelle eine Spalte mit den Zeilennummern in der zweiten
// Datentabelle, sodass sie zum Verknüpfen mit der ersten Tabelle verwendet werden kann
dt2 << Neue Spalte ( "Zeilennummer" , Werte ( 1 :: N Zeilen ( dt2 ) ) ) ;
// Finden Sie den Wert aus der zweiten Tabelle, der dem am nächsten kommt
// Wert aus der ersten Datentabelle
Für ( ich = 1 , ich <= N Zeilen ( dt1 ) , ich ++,
Die gewählte = dt2 << Holen Sie sich Zeilen wo ( dt2 : NPN2 > dt1 : NPN1 [ ich ] ) ;
Wenn ( N Zeilen ( Die gewählte ) == 0 ,
dt1 : Zeilennummer am nächsten [ ich ] = N Zeilen ( dt2 ) , // Für den Fall hinzugefügt: TheSelected ist leer
Wenn ( Die gewählte [ 1 ] > 1 ,
Wenn ( dt2 : NPN2 [ Die gewählte [ 1 ]] - dt1 : NPN1 [ ich ] > dt1 : NPN1 [ ich ] - dt2 : NPN2 [ Die gewählte [ 1 ] - 1 ] ,
dt1 : Zeilennummer am nächsten [ ich ] = Die gewählte [ 1 ] ,
dt1 : Zeilennummer am nächsten [ ich ] = Die gewählte [ 1 ] - 1
) ,
dt1 : Zeilennummer am nächsten [ ich ] = Die gewählte [ 1 ] ; // Für den Fall hinzugefügt: TheSelected[1] == 1
)
) ;
) ;
// Verbinde die Tabellen basierend auf dem nächstgelegenen gefundenen Wert
dtbeigetreten = dt1 << Verbinden (
Mit ( dt2 ) ,
Name der Ausgabetabelle ( „Nächste Werte vereint“ ) ,
Durch passende Spalten ( : Zeilennummer am nächsten = : Zeilennummer ) ,
Multiples löschen ( 0 , 0 ) ,
Nichtübereinstimmungen einbeziehen ( 1 , 0 ) ,
Behalten Sie die Reihenfolge der Haupttabelle bei ( 1 )
) ;
Betreff: Spalten aus separaten Datentabellen angebenHier ist ein Beispielskript, das eine der Möglichkeiten zeigt, wie Sie das tun können, wonach Sie suchen:
Namen standardmäßig hier ( 1 );
// Eine Beispieldatentabelle öffnen
dt = Offen ( „$SAMPLE_DATA/semiconductor Capability.jmp“ );
// Erstellen Sie ein paar Datentabellen, um zu zeigen, wie Suchvorgänge durchgeführt werden
// an mehrere Tabellen
dt1 = dt << Teilmenge (ausgewählte Zeilen( 0 ), columns( npn1 ) );
dt2 = dt << Teilmenge (ausgewählte Zeilen( 0 ), Spalten( npn2 ) );
Schließen ( dt, nosave );
// Sortieren Sie die Tabelle, um die nächstgelegenen Werte zu finden
dt2 << Sortieren ( durch( NPN2 ), Tabelle ersetzen( 1 ) );
// Erstellen Sie eine Spalte in der ersten Tabelle, um die Zeilennummer zu speichern
// aus der zweiten Tabelle, die ihm am nächsten liegt
dt1 << Neue Spalte ( „Zeilennummer am nächsten“ );
// Erstelle eine Spalte mit den Zeilennummern in der zweiten
// Datentabelle, sodass sie zum Verknüpfen mit der ersten Tabelle verwendet werden kann
dt2 << Neue Spalte ( "Zeilennummer" , Werte( 1 :: N Zeilen ( dt2 ) ) );
// Finden Sie den Wert aus der zweiten Tabelle, der dem am nächsten kommt
// Wert aus der ersten Datentabelle
Für ( ich = 1 , ich <= N Zeilen ( dt1 ), i++,
TheSelected = dt2 << Holen Sie sich Zeilen wo ( dt2:NPN2 > dt1:NPN1 );
Wenn ( Die gewählte[ 1 ] > 1 ,
Wenn ( dt2:NPN2[Theselected[ 1 ]] - dt1:NPN1 > dt1:NPN1 - dt2:NPN2[Theselected[ 1 ] - 1 ],
dt1:Zeilennummer am nächsten = Theselected[ 1 ],
dt1:Zeilennummer am nächsten = Theselected[ 1 ] - 1
)
);
);
// Verbinde die Tabellen basierend auf dem nächstgelegenen gefundenen Wert
dtjoined = dt1 << Verbinden (
With( dt52 ),Output Table Name( „Nächste Werte vereint“ ),
Durch übereinstimmende Spalten (:Zeilennummer am nächsten =:Zeilennummer),
Vielfaches löschen( 0 , 0 ),
Nichtübereinstimmungen einbeziehen( 1 , 0 ),
Reihenfolge der Haupttabelle beibehalten( 1 )
);