Problème
Supposons que vous souhaitiez sélectionner des lignes dans une table de données qui remplissent plusieurs conditions. Ou peut-être souhaitez-vous sélectionner les lignes qui répondent à l’une des quelques conditions.
Solution
Les exemples suivants montrent comment utiliser les opérateurs logiques AND (&) et OR (|) avec le message Select Where pour sélectionner des lignes qui répondent à plusieurs conditions.Voir les commentaires intégrés pour plus de détails.
/* Open a sample data table */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Select rows where students are over 13, who are also less than 65 inches tall */
dt << Select Where( :age > 13 & :height < 65 );
Wait( 2 ); // For demonstration purposes
/* Select rows where students are either 12 or 14 years old */
dt << Select Where( :age == 12 | :age == 14 );
@rishdude23
Une formule de colonne parcourt nativement les lignes.La boucle For() n’est donc pas nécessaire.La fonction Lag() renverra la valeur de l'argument de la ligne précédente.Donc quelque chose comme ça pourrait fonctionner pour vous.
Formula(
If(
(:age == Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Same age, same gender",
(:age != Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Diff age, same gender",
(:age == Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Same age, diff gender",
(:age != Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Diff age, diff gender"
)
)
J'espère que cela pourra aider.
Cette question n'est pas liée à l'utilisation de Select Where() mais plutôt à une formule de colonne.Il est préférable d'adresser des questions comme celle-ci à la zone de discussion générale, où de nombreux scripteurs peuvent répondre.
@Wendy_Murphrey
Salut,
J'essaie d'écrire une nouvelle colonne dans le fichier jmp Big Data appelé "AgeSex_comp" avec une formule contenant un pour longtemps et quelques conditions. Je voudrais comparer les informations sur l'âge et le sexe de la ligne précédente avec la ligne suivante pour voir si elles sont identiques ou différentes. Voici le script que j'ai écrit, il ne fonctionne pas. Des idées où je me trompe ?
dt = current data table();
dt << NewColumn("AgeSex_Comp", Character, Nominal, Formula(
FOR(i=1, i<= N Row(dt), i++,
if((:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Same age, same gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Diff age, same gender",
(:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Same age, diff gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Diff age, diff gender"
)
)
)
)