Wählen Sie „Wo eine Spalte einen Wert enthält“ ausIch habe ein Skript, das Folgendes soll:
1) Erlauben Sie dem Benutzer, mehrere Dateien zum Öffnen auszuwählen
2) Schließen Sie alle Dateien, die keine Daten enthalten (d. h. nur eine Spalte mit einem Wert, der NA anzeigt).
3) Schließen Sie alle Dateien, die nicht 1146 in Spalte 7 enthalten (die Spalte heißt in einigen Dateien Sealer # und ist in anderen unbenannt, außerdem ist sie in einigen Dateien eine Zeichenspalte und in anderen eine numerische Spalte).
Ich habe die ersten beiden Dinge zum Laufen gebracht, aber mit dem dritten habe ich Probleme. Hier ist das Skript, das ich bisher habe.
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
check = DT << Get Rows Where( Contains( Column( 7 ), "1146" ) );
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Soweit ich weiß, liegt das Problem an der Leitung check = DT<< Zeilen wo abrufen ( Enthält ( Spalte ( 7 ), „1146“ )); , aber ich weiß nicht, wie ich das Problem beheben kann.
Irgendwelche Vorschläge?
Betreff: Benutzer durch Popup-Fenster zur Auswahl einer Spalte(n) auffordernLaden Sie das Add-in in Ihren Download-Ordner herunter
Gehen Sie dann zu JMP und
Datei==>Öffnen
Gehen Sie zum Download-Ordner
Klicken Sie einmal auf die Datei „Runs Test.jmpaddin“.
Gehen Sie dann zum Abwärtspfeil für die Schaltfläche „Öffnen“ und wählen Sie aus
Öffnen Sie es mit dem Add-In Builder
Wählen Sie im Add-In Builder die Registerkarte Menüelemente aus
Klicken Sie dann auf den Eintrag „Runs Test“.
Im Bereich „Run this JSL“ sehen Sie das eingebettete Skript
Schneiden Sie es aus und fügen Sie es in ein Skriptfenster ein
Betreff: Benutzer durch Popup-Fenster zur Auswahl einer Spalte(n) auffordernDanke Jim, ich habe das Add-In gefunden. Wie sehe ich mir den Skriptcode an?
Sam
Betreff: Benutzer durch Popup-Fenster zur Auswahl einer Spalte(n) auffordernHallo Jim, kannst du bitte genauer sein? Ist das ein eingebautes Skript?
Danke
Sam
Betreff: Benutzer durch Popup-Fenster zur Auswahl einer Spalte(n) auffordernIch schlage vor, dass Sie sich das JMP-Add-in „Runs Test“ ansehen, das ein Beispiel dafür enthält, wie Sie mit Ihrem Beispiel das tun, was Sie tun möchten. Es bietet ein Dialogfeld, das die Auswahl von Spalten und deren Platzierung in Auswahlfeldern ermöglicht. Es verfügt außerdem über Filter- und Rückruffunktionen.
Führt den Test (Wald-Wolfowitz-Test) und die JSL-Implementierung des JMP-Plattform-Dialogfelds durch
Fordern Sie den Benutzer über ein Popup-Fenster auf, eine oder mehrere Spalten auszuwählenHallo Leute, ich versuche, den Benutzer über ein Skript aufzufordern, zwei Spalten mit X-Koordinate und eine weitere Y-Koordinate aus einer Tabelle auszuwählen.
Die folgende Grafik zeigt, was das Skript meiner Meinung nach tun soll. Der Benutzer wählt die XY-Koordinate aus und ich übergebe sie dann als Variable. Ich brauche es später im Skript, um das Mapping durchzuführen. irgendwelche Ideen? Danke, die Grafik unten ist ein Fotoshop, um das Endergebnis zu zeigen.
Danke.

Betreff: Wählen Sie aus, wo eine Spalte einen Wert enthältIch habe versucht, diesen Skriptabschnitt zu debuggen, konnte ihn aber nie zum Laufen bringen. Am Ende habe ich diese Version erhalten, die mit einigen geringfügigen Änderungen funktioniert.
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save )
,
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
name = Char( Column( DT, 7 ) << get name );
Print( name );
Eval( Parse( "check = DT << Select Where( Contains( " || ":" || name || " , " || "char(1146)))" ) );
If( N Rows( DT << Get Selected Rows ) == 0,
Close( DT, No Save )
,
DT << Invert Row Selection;
DT << Delete Rows;
DT << Clear Select;
//oldname = char(DT<< Get Name());
//rename = char(Word(-1, oldname, "-"));
//DT<<SET name=""></SET>
Betreff: Wählen Sie aus, wo eine Spalte einen Wert enthältHier ist eine leicht modifizierte Version Ihres Codes, die die Werte der Get Rows Where-Anweisung und den Wert von check auflistet.
Names Default To Here( 1 );
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
//Current Data Table( DT );
Eval(
Parse(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 5 ) << get name ) || " , \!"1146\!" ) ) );"
)
);
Show(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 7 ) << get name ) || " , \!"1146\!" ) ) );",
check
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Möglicherweise möchten Sie den JMP-Debugger darauf ausführen. Ich gehe davon aus, dass es eine Nichtübereinstimmung mit Spalte 7 oder ähnlichem gibt. Ich weiß, dass der Code funktioniert, da ich ihn an einer Beispieldatentabelle getestet habe, die eine Spalte mit einigen Zeilen hatte, deren Spaltenwerte 1146 enthielten
Betreff: Wählen Sie aus, wo eine Spalte einen Wert enthältIch habe versucht, den Abschnitt in das Skript einzufügen, aber es scheint nicht zu funktionieren. Die leeren Dateien werden weiterhin geschlossen, aber die Dateien, die Daten enthalten und 1146 enthalten, werden geschlossen. Ich habe versucht, If(NRows(check)==0 in !=0 zu ändern, aber es schien keinen Unterschied zu machen. Und dieser Fehler wird im Protokoll angezeigt:
Unerwartetes ")". Möglicherweise fehlt ein „;“ oder ",".
Zeile 1 Spalte 64: ...( :Sealer # , "1146" ) ) ►);...
Der verbleibende Text, der ignoriert wurde, war
Hier ist das aktualisierte Skript:
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
Names Default To Here( 1 );
Current Data Table( DT );
Eval(
Parse( "check = DT << Get Rows Where( Contains( " || ":" || Char( Column( 7 ) << get name ) || " , \!"1146\!" ) ) );" )
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Betreff: Wählen Sie aus, wo eine Spalte einen Wert enthältDieser Code wird funktionieren
Names Default To Here( 1 );
dt = Current Data Table();
Eval( Parse( "check = DT << Get Rows Where( Contains( " || ":" ||
Char( Column( 3 ) << get name ) || " , \!"1146\!" ) ) );" ) );