Errore con l'istruzione IF
Sto usando un'istruzione IF come mostrato di seguito. Quando eseguo lo script, implementa solo il comando "Apri"> lo script non entra nemmeno nel ciclo IF.
Ho provato a utilizzare "FOR EACH ROW" insieme all'istruzione IF come mostrato nello script 2 ma genera il seguente errore
Eventuali suggerimenti??
dt = Open ("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means.jmp");
IF( :"Ppk"n <= 2 ,
(
dt << Select where( :"Ppk"n <=2 );
dt_ppk = dt << subset (Output table("fc_mcs11_evm_cluster_means_low_ppk.jmp"), Selected Rows( 1 ), selected columns( 0 ));
dt_ppk << Save As("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means_low_ppk.jmp");
),
"PPk Good"
);dt = Open ("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means.jmp");
For each row(dt,
IF( :"Ppk"n <= 2 ,
(
dt << Select where( :"Ppk"n <=2 );
dt_ppk = dt << subset (Output table("fc_mcs11_evm_cluster_means_low_ppk.jmp"), Selected Rows( 1 ), selected columns( 0 ));
dt_ppk << Save As("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means_low_ppk.jmp");
),
"PPk Good"
)
); Automazione e scriptingAnalisi e modellazione dei dati di baseRe: Errore con l'istruzione IFCosa stai cercando di fare?
Re: Errore con l'istruzione IF1] Apertura di un file
2] Verifica se il nome della colonna Ppk <=2
a] se sì, selezionare le righe con Ppk <=2 - sottoimpostarle e salvarle come un'altra tabella di dati
b] se no allora visualizza "PPk buono"
Re: Errore con l'istruzione IFUtilizzare << Get Rows Where per ottenere le righe con Ppk <= 2 e quindi utilizzare le istruzioni if per verificare se gli elementi in tale elenco sono superiori a 0
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Show(Row()); // Row() is inmitialize as 0 which isn't valid row number in JMP
// -> :name; // won't return anything useful
rows_of_interest = dt << Get Rows Where(:height <= 60);
If(N Items(rows_of_interest) > 0,
// perform actions
Show("PPK NOK")
,
Print("PPK OK");
);Re: Errore con l'istruzione IFUtilizzo @jthi risposta. Ma per spiegare cosa è successo...
Nei tuoi due frammenti originali, il primo fallisce perché non c'è una riga corrente nella tabella, quindi
:"Ppk"n <= 2
sta confrontando con un valore mancante; i confronti contro i mancanti non sono né veri né falsi e le clausole vero e falso di if non vengono eseguite (un risultato sorprendente se non si conoscono i valori mancanti in JMP).
dt=open("$sample_data/big class.jmp");
dt:age==14
. <<< no row selected, result is missing
row()=5; dt:age==13
0 <<< LILLIE is 12
Nel secondo esempio, ForEachRow rende ogni riga la riga corrente, una alla volta, in modo da evitare il primo problema. Basato sul impossibile salvare alla riga 2 messaggio, sono abbastanza sicuro che la prima tabella del sottoinsieme sia appesa al nome del file e il secondo sottoinsieme creato dalla riga 2 voglia salvare nello stesso file, che è già in uso. (modificare:) chiudi(dt_ppk) potrebbe risolverlo, ma ricreerebbe comunque lo stesso file, ancora e ancora.
Re: Errore con l'istruzione IFIl primo argomento della funzione If(),
:"Ppk"n <= 2
viene valutato e confronta un riferimento di colonna o una variabile di tabella con un valore numerico. È questo che vuoi fare?
Hai una colonna e una variabile di tabella che sono entrambi nomi Ppk?
Re: Errore con l'istruzione IFGrazie mille. Questo ha funzionato bene.
Re: Errore con l'istruzione IFCiao Craig,
Grazie per la spiegazione. È chiaro ora.