Erreur avec l'instruction IF
J'utilise une instruction IF comme indiqué ci-dessous. Lorsque j'exécute le script, il n'implémente que la commande "Ouvrir"> le script n'entre même pas dans la boucle IF.
J'ai essayé d'utiliser "FOR EACH ROW" avec l'instruction IF comme indiqué dans le script 2 mais cela génère l'erreur suivante
Aucune suggestion??
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"
)
); Automatisation et scriptAnalyse et modélisation des données de baseRe : Erreur avec l'instruction IFQu'essayez-vous de faire?
Re : Erreur avec l'instruction IF1] Ouvrir un fichier
2 ] Vérifier si le nom de la colonne Ppk <=2
a] si oui, sélectionnez les lignes avec Ppk <=2 - créez-en un sous-ensemble et enregistrez-les sous un autre tableau de données
b] si non alors affiche "PPk bon"
Re : Erreur avec l'instruction IFUtilisez << Get Rows Where pour obtenir les lignes avec Ppk <= 2, puis utilisez les instructions if pour vérifier si les éléments de cette liste sont supérieurs à 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 : Erreur avec l'instruction IFUtiliser @jthi répondre. Mais pour expliquer ce qui s'est passé...
Dans vos deux extraits d'origine, le premier échoue car il n'y a pas de ligne actuelle dans le tableau, donc
:"Ppk"n <= 2
compare avec une valeur manquante ; les comparaisons avec les valeurs manquantes ne sont ni vraies ni fausses et les clauses true et false de if ne sont pas exécutées (un résultat surprenant si vous ne connaissez pas les valeurs manquantes dans 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
Dans le deuxième exemple, ForEachRow fait de chaque ligne la ligne actuelle, une à la fois, de sorte que le premier problème est évité. Basé sur impossible d'enregistrer à la ligne 2 message, je suis à peu près sûr que la première table de sous-ensemble est accrochée au nom de fichier et que le deuxième sous-ensemble créé à partir de la ligne 2 veut enregistrer dans le même fichier, qui est déjà utilisé. (modifier:) fermer(dt_ppk) pourrait résoudre ce problème, mais il recréerait toujours le même fichier, encore et encore.
Re : Erreur avec l'instruction IFLe premier argument de la fonction If(),
:"Ppk"n <= 2
est évalué et compare une référence de colonne ou une variable de table à une valeur numérique. C'est ce que tu veux faire ?
Avez-vous une colonne et une variable de table qui s'appellent toutes les deux Ppk ?
Re : Erreur avec l'instruction IFMerci beaucoup. Cela a bien fonctionné.
Re : Erreur avec l'instruction IFSalut Craige,
Merci pour l'explication. C'est clair maintenant.