Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteGentili utenti della community di JMP,
Sono un nuovo per JMP e ho dovuto affrontare un problema. Spero di poter ricevere aiuto da voi ragazzi.
Ho una tabella di dati. Vorrei eseguire un generatore di grafici per colonne solo alcuni valori specifici.
Ad esempio, vorrei selezionare le celle che appartengono alle colonne AB766 e RSDF "monitor_set_name" e "measurement_set_name"; e altre colonne e righe corrispondenti a "AB766" e "RSDF"

Quindi, vorrei eseguire "Graph builder" per la tabella che contiene le informazioni di cui ho bisogno.
Se "monitor_set_name" e "measurement_set_name" non contengono "AB766" e "RSDF", salterò per eseguire il "graph builder"
Potresti darmi qualche consiglio?
Cordiali saluti,
Personalizzazione di massaRi: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteCaro signor Brady,
Grazie per il tuo supporto. Applicherò il tuo suggerimento più avanti nel mio script.
Cordiali saluti,
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteFammi provare Grazie mille.
A proposito, ho trovato un metodo che è stato suggerito nel forum e funziona per me
CHECK_U2_CT_HDF = Contains(
df << get column names( string ),
"centerline@u2_holdforceduration_2"
);
If( CHECK_U2_CT_HDF == 0,
df << New Column( "centerline@u2_holdforceduration_2",
Numeric,
Continuous,
Format( "Best", 10 )
)
);
Grazie per il vostro forte sostegno!
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteLa funzione Try() è un modo per affrontare questo problema.
U1_UCL_HDF =Try( Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1],.);
if(isMissing(:U1_UCL_HDF),
add and populate the new column
);
U1_UCL_HDF avrà un valore valido se la colonna e la riga esistono, ma se il tentativo fallisce, restituirà un valore mancante.quindi il flusso potrebbe essere qualcosa di simile
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteCaro Txnelson,
JMP smetterà di funzionare quando non riesce a trovare una colonna di riferimento -> hai ragione
Vorrei chiarire la mia domanda. Il fatto è che cerco di ottenere dati dal sistema nella mia azienda. A causa delle diverse categorie di prodotti, la tabella dei dati sarà diversa.
Per esempio:
Prodotto A: contiene colonna: up_control_lmt@u1_holdforceduration_2 E up_control_lmt@u2_holdforceduration_2
Prodotto B: contiene solo la colonna: up_control_lmt@u1_holdforceduration_2
Dal momento che voglio creare uno script che possa essere applicato per entrambi i prodotti.
Nel tuo suggerimento, devo aggiungere un'altra colonna per il prodotto B se la tabella dei dati del prodotto B non contiene la colonna: up_control_lmt@u2_holdforceduration_2.
Pertanto, con la funzione che posso utilizzare per verificare se la tabella dei dati del prodotto B contiene o meno: up_control_lmt@u2_holdforceduration_2. --> se la tabella dati contiene: up_control_lmt@u2_holdforceduration_2. , Aggiungerò una nuova colonna alla tabella dei dati.
Spero che tu possa capire la mia domanda?
Cordiali saluti,
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteIo sono confuso.Si indica che si desidera leggere i valori da una colonna specificata, cella 1, ma che non si dispone di tale colonna.
JMP interromperà l'esecuzione quando non riesce a trovare una colonna di riferimento.Pertanto, non continuerà l'elaborazione una volta rilevato l'errore.
Se non si dispone di una colonna di questo tipo e si desidera averla, sarà necessario aggiungere la colonna alla tabella dei dati e popolare la cella 1 con il valore desiderato.Questa è la soluzione ....... ma non credo di capire davvero la domanda.
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteCaro Txnelson,
Funziona. Grazie per il tuo suggerimento. Farò riferimento alla Guida allo scripting per lo studio.
Nel frattempo, ho altre domande.
Vorrei estrarre il valore dalla cella della colonna, quindi assegnare il valore alle variabili poiché vorrei utilizzare le variabili per la rappresentazione grafica.
Tuttavia, nel caso in cui la mia tabella non contenga la colonna: lo_control_lmt@u2_holdforceduration_2 O : up_control_lmt@u2_holdforceduration_2 , il mio script non mostra alcun grafico
Se elimino 2 righe nel mio script di seguito, il mio script mostrerà il grafico
U2_UCL_HDF = Colonna(dt,"up_control_lmt@u2_holdforceduration_2")[1];
U2_LCL_HDF = Colonna(dt,"lo_control_lmt@u2_holdforceduration_2")[1];
Hai qualche soluzione per questo caso. Cordiali saluti.
La mia sceneggiatura:
U1_UCL_HDF = Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U1_LCL_HDF = Column( dt, "lo_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U2_UCL_HDF = Column( dt, "up_control_lmt@u2_holdforceduration_2" )[1]; //extract value from cell
U2_LCL_HDF = Column( dt, "lo_control_lmt@u2_holdforceduration_2" )[1]; // extract value from cell
NW = New Window( "KPP summarize",
Variability Chart(
Y( :HOLDFORCEDURATION_2 ),
X( :COMPLEVEL_1, :LINK_ID, :TEST_OR_BOND_HEAD_ID, :LOT, :BONDSTAGE, :CARRIER_X ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Connect Cell Means( 1 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
AIAG Labels( 0 ),
SendToReport(
Dispatch(
{"Variability Chart for HOLDFORCEDURATION_2"},
"2",
ScaleBox,
{Min( 332 ), Max( 641 ), Inc( 50 ), Minor Ticks( 1 ),
Add Ref Line( 0, "Dotted", "Medium Light Gray", "", 1 ),
Add Ref Line( U1_UCL_HDF, "Solid", "Red", "UCL_U1", 2 ),
Add Ref Line( U1_LCL_HDF, "Solid", "Red", "LCL_U1", 2 ), // put the value in here extract
Add Ref Line( U1_CT_HDF, "DashDot", "Red", "CL_U1", 2 ), // put the value in here extract
Add Ref Line( U2_UCL_HDF, "Solid", "BlueCyan", "UCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_LCL_HDF, "Solid", "BlueCyan", "LCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_CT_HDF, "DashDot", "BlueCyan", "CL_U2", 2 )} // put the value in here extract
)
)
)
);Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteLa tua variabile "df" punta alla tabella dei dati con subset.Quando crei un report da una tabella dati, non diventa parte della tabella dati.È un'entità su se stessa.Pertanto il modo più semplice per accedere al report creato è specificare una variabile che punti ad esso.L'ho fatto nella seguente modifica del tuo script.
gb = df << Graph Builder(
La variabile "gb" punta all'oggetto Graph Builder.Più avanti nel codice, il messaggio Save Picture viene applicato al report generato dalla piattaforma Graph Builder
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Ecco lo script modificato
names default to here( 1 );
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
gb = df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Consiglio vivamente di dedicare del tempo alla lettura della Guida allo scripting, disponibile nella Libreria della documentazione di JMP, che si trova nel menu a discesa della Guida!
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteCaro Txnelson,
Funziona. Apprezza molto.
Cerco di seguire la tua guida e applicarla per me stesso
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
df << save picture( "C:\Users\lamquocb\image.jpg" );
Tuttavia, riscontro un altro problema per cui non sono riuscito a salvare l'immagine: il generatore di grafici per df.
Provo ad accedere alla posizione in cui voglio salvare l'immagine, ma non riesco a trovarne una.
Hai qualche consiglio?
Cordiali saluti,
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfatteCIAO,
Se non conosci JMP, assicurati di dare un'occhiata al filtro dati locali e al selettore di colonne. Il filtro dei dati locali probabilmente ti aiuterà qui... Ho incluso un commutatore di colonna nel mio esempio solo per farti sapere cosa può fare.
Basta fare clic sulle voci di menu per restringere il grafico ai dati che si desidera considerare. Non è richiesta alcuna codifica ed è facile da usare ... chiunque può usarli.
Per ottenere il filtro dati locali, dal menu del triangolo rosso di Graph Builder selezionare Aggiungi filtro dati locali.
Per ottenere il cambio di colonna, seleziona Ripristina > Cambio di colonna dal menu principale. Dovrai anche selezionare la colonna che desideri scambiare e le colonne tra le quali desideri ruotare. Assicurati di includere la colonna che desideri sostituire in questo set. Tutte le colonne devono essere dello stesso tipo di dati.
Esegui lo script qui sotto per dare un'occhiata a questi in azione.
Saluti,
Brady

Names Default To Here(1);
dt = open ("$Sample_Data\Car Physical Data.jmp");
Graph Builder(
Size( 526, 448 ),
Show Control Panel( 0 ),
Variables( X( :Country ), Y( :Gas Tank Size ) ),
Elements( Box Plot( X, Y, Legend( 8 ) ), Points( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter(
columns( :Type ),
Where( :Type == "Compact" ),
Display( :Type, N Items( 5 ) )
)
),
Column Switcher(
:Gas Tank Size,
{:Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size}
)
);
Ri: Come eseguire i comandi JSL dopo che le condizioni sono soddisfattePer generare il JSL di seguito, ho semplicemente eseguito i passaggi in modo interattivo, quindi ho prelevato il codice dal registro e l'ho incollato in una finestra di script.
names default to here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
Open( "$SAMPLE_DATA/big class.jmp" );
// Select matching cells
Data Table( "big class" ) << Select Where( :age == 12 & :sex == "F" );
// Subset data table
// → Data Table( "Subset of big class" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class - Graph Builder
Data Table( "Subset of big class" ) << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Invert current selection
Data Table( "big class" ) << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of big class 2" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class 2 - Graph Builder
Data Table( "Subset of big class 2" ) <<
Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);