Selezionare Dove una colonna contiene un valoreHo uno script che dovrebbe:
1) Consenti all'utente di scegliere più file da aprire
2) Chiudi tutti i file che non hanno dati (cioè solo una colonna con un valore che dice NA)
3) Chiudi tutti i file che non contengono 1146 nella colonna 7 (la colonna si chiama Sealer # in alcuni file e non ha nome in altri, inoltre è una colonna di caratteri in alcuni file e una colonna numerica in altri)
Ho fatto funzionare le prime due cose, ma sto lottando con la terza. Ecco lo script che ho finora.
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 )
);
);
);
Per quanto posso dire il problema è la linea controllo = DT<< Ottieni righe dove ( Contiene ( colonna ( 7 ), "1146" )); , ma non riesco a capire come risolverlo.
Eventuali suggerimenti?
Ri: Chiedi all'utente di selezionare una o più colonne tramite la finestra popupScarica il componente aggiuntivo nella cartella dei download
Quindi vai su JMP e
File==>Apri
Vai alla cartella di download
Fare clic una volta sul file Runs Test.jmpaddin
Quindi vai alla freccia giù per il pulsante Apri e seleziona
Apri utilizzando Addin Builder
In Addin Builder, seleziona la scheda Voci di menu
Quindi fare clic sulla voce Runs Test
Nell'area "Esegui questo JSL", vedrai lo script incorporato
Taglialo e incollalo in una finestra di script
Ri: Chiedi all'utente di selezionare una o più colonne tramite la finestra popupGrazie Jim, ho trovato l'addin, come guardo il codice dello script?
Sam
Ri: Chiedi all'utente di selezionare una o più colonne tramite la finestra popupCiao Jim, puoi essere più specifico? è uno script integrato?
Grazie
Sam
Ri: Chiedi all'utente di selezionare una o più colonne tramite la finestra popupTi suggerisco di esaminare il componente aggiuntivo JMP su "Runs Test" che contiene un esempio di ciò che stai chiedendo di fare con il tuo esempio. Fornisce una finestra di dialogo che consente la selezione delle colonne e il loro posizionamento nelle caselle di selezione. Ha anche capacità di filtraggio e capacità di richiamo.
Esegue il test (test di Wald-Wolfowitz) e l'implementazione JSL della finestra di dialogo della piattaforma JMP
Richiedi all'utente di selezionare una o più colonne tramite la finestra popupCiao ragazzi, sto cercando di fare in modo che lo script richieda all'utente di selezionare 2 coordinate x di colonne e un'altra coordinata y da una tabella.
Il grafico qui sotto è ciò che mi piace che faccia lo script. L'utente sceglie la coordinata x, y, quindi la uso per trasmetterla come variabile. Ne ho bisogno nello script in seguito per eseguire la mappatura die. qualche idea? grazie il grafico qui sotto è un negozio di foto per mostrare il risultato finale.
Grazie.

Oggetto: selezionare dove una colonna contiene un valoreHo provato a eseguire il debug di quella sezione dello script, ma non sono mai riuscito a farlo funzionare. Mi sono ritrovato con questa versione che funzionava con alcune lievi modifiche.
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>
Oggetto: selezionare dove una colonna contiene un valoreEcco una versione leggermente modificata del tuo codice, che elenca i nostri valori dell'istruzione Get Rows Where e il valore di check.
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 )
);
);
);
Potresti voler eseguire JMP Debugger su questo. La mia ipotesi è che ci sia una mancata corrispondenza con la colonna 7 o qualcosa del genere. So che il codice funziona, poiché l'ho testato su una tabella di dati di esempio che aveva una colonna con un paio di righe che avevano il tuo 1146 nei valori della colonna
Oggetto: selezionare dove una colonna contiene un valoreHo provato a inserire la sezione nella sceneggiatura, ma non sembra funzionare. Chiude ancora i file vuoti, ma chiude i file che contengono dati e contengono 1146. Ho provato a cambiare If(NRows(check)==0 in !=0, ma non sembrava fare la differenza. E questo errore viene visualizzato nel registro:
Inaspettato ")". Forse manca un ";" O ",".
Riga 1 Colonna 64: ...( :Sealer # , "1146" ) ) ►);...
Il testo rimanente che è stato ignorato è stato
Ecco lo script aggiornato:
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 )
);
);
);
Oggetto: selezionare dove una colonna contiene un valoreQuesto codice funzionerà
Names Default To Here( 1 );
dt = Current Data Table();
Eval( Parse( "check = DT << Get Rows Where( Contains( " || ":" ||
Char( Column( 3 ) << get name ) || " , \!"1146\!" ) ) );" ) );