Comment puis-je trouver des lignes avec les mêmes valeurs pour deux colonnes quelconques dans une colonne donnée ?Par exemple, les colonnes 1 —— 3 ici :
dt = Open( "$SAMPLE_DATA\Missing Data Pattern.jmp" );
dt<<NEW column=""></NEW>

Merci!
Automatisation et scriptRe : Comment puis-je trouver des lignes avec les mêmes valeurs pour deux colonnes quelconques dans une colonne donnée ?Merci pour votre aide!

Re : Comment puis-je trouver des lignes avec les mêmes valeurs pour deux colonnes quelconques dans une colonne donnée ?@lwx228 , @txnelson ,
Juste pour le plaisir...
- Ajoutée @lwx228 exemple de données à @txnelson , voir le tableau de données JMP joint JN_AdjacentPlus.jmp
- Le script ci-dessous est intégré dans le tableau. Le script est nommé "Rechercher toutes les lignes avec des colonnes adjacentes correspondantes", en fait les valeurs correspondantes ne sont pas vides.
- Remarque #1 : Ce script prendra n'importe quel nombre de colonnes. Les colonnes n'ont pas besoin d'être adjacentes dans la table de données, modifiez simplement la spécification de la colonne dans la définition de xmat.
- Remarque n° 2 : Abs(x1-x2) garantit que les correspondances adjacentes renvoient zéro et que toutes les autres valeurs sont > 0.
- Remarque #3 : Vmin() trouve le minimum de chaque colonne d'une matrice. Ainsi, transpose( Vmin(transpose(Abs(x1-x2))) ) renvoie le minimum de ligne de Abs(x1-x2)
- Remarque #4 : Loc( vec ==0 ) renvoie les numéros de ligne dont la valeur est zéro.
- Remarque #5 : La solution de Jim trouve n'importe quelle correspondance, ce script trouve les correspondances adjacentes.
Names Default to Here(1);
dt = current data table();
xmat = dt[0,1::4];
nc = ncol(xmat);
x1 = xmat[0,1::nc-1];
x2 = xmat[0,2::nc];
idx = Loc( Transpose(Vmin(Transpose(abs(x1-x2)))) == 0);
dt << New Column("t1", numeric, continuous);
:t1[idx]=1;
Re : Comment puis-je trouver des lignes avec les mêmes valeurs pour deux colonnes quelconques dans une colonne donnée ?Merci Jim!
Mode( dt[i, 1::3] || [-999] ) == -999
Re : Comment puis-je trouver des lignes avec les mêmes valeurs pour deux colonnes quelconques dans une colonne donnée ?Voici une autre approche de la question.J'utilise une fonction Mode() pour voir quel est le mode.Si un mode réel existe, cela signifie qu'au moins 2 valeurs correspondent, et donc la colonne t1 sera définie sur 1. Voir les commentaires JSL pour une explication plus complète.
J'ai joint un tableau de données que j'ai utilisé pour les tests.
Names Default To Here( 10 );
dt = Current Data Table();
New Column( "t1" );
For( i = 1, i <= N Rows( dt ), i++,
// add a value to the matrix that is less
// than any value in the data table. If
// the mode() function does not find an
// actual mode, it returns the smallest
// value from the matrix, so if that is
// the value returned, you know there
// are not at least 2 values that equal
// each other in the columns
If( Mode( dt[i, 0] || [-999] ) == -999,
dt:t1[i] = .,
dt:t1[i] = 1
)
);
Re : Comment puis-je trouver des lignes avec les mêmes valeurs pour deux colonnes quelconques dans une colonne donnée ?
dt = Current Data Table();
x = dt << Get As Matrix();
For( i = 1, i <= N Row( dt ), i++,
For( j = 1, j <= 2, j++,
If( x[i, j] == x[i, j + 1],
x[i, 5] = 1;
Break();
)
)
);
dt[0, 0] = x;