Comparaison de plusieurs colonnes JSL avec un nombre fixe à l'aide de la boucle for et génération d'une nouvelle colonne pour la sortieSalut les experts JSL, je suis un débutant de JSL, je veux effectuer une comparaison de plusieurs colonnes, le nom de la colonne est, Col1, Col2, Col3 etc. J'utilise une boucle For pour cette comparaison (voir ci-dessous pour des scripts entiers), et si elle tombe dans la formule (voir ci-dessous), elle affichera 0 ou 1. 1. Ce que je sais, c'est que si je mets :Col1 dans le script :Col1, le script fonctionne correctement comme ci-dessous. 2. Ce que je ne sais pas, c'est que si je remplace :Col1 dans Column( dt, i ), le script ne fonctionne pas. J'ai aussi essayé d'utiliser, :Name, :"Name", mais rien de tout cela ne fonctionne pour remplacer :Col1. Quelqu'un sait comment faire la comparaison de plusieurs colonnes? Exemple de parties modifiées : Cela fonctionne correctement : Nouvelle colonne(Nom, Caractère, "Nominal", Formule(Si( 1 > :Col1 >0, 0,1)) Cela ne fonctionne pas : Nouvelle colonne(Nom, Caractère, "Nominal", Formule(If( 1 > :Column( dt, i ) >0, 0,1)) Exemple des scripts entiers : dt1 = table1 ; dt = table2 ; For( i = 1, i < N Col( dt ) + 1, i++, Nom = Colonne( dt, i ) << obtenir le nom; Si( Contient( Nom, "ABCD" ), For( j = 1, j <= N Row( dt1 ), j++, GGG = Column( dt1, "GGGer" )[j] ; New Column( Name, Character, "Nominal", Formula( If( 1 > :Col1 > 0, "0", "Fail" ) ) ); ); ) ); );Re : Comparaison de plusieurs colonnes JSL avec un nombre fixe à l'aide de la boucle for et génération d'une nouvelle colonne pour out//ajoute toutes les images dans un tableau récapitulatif
répertoire = Choisissez Répertoire();
fileNames = Fichiers dans le répertoire (répertoire);
summary = New Table( "summary", New Column( "name", character ), New Column( "rows", numeric ) );
For( iFile = 1, iFile <= N Items( fileNames ), iFile++,
nom_fichier = noms_fichier[iFile] ;
Si( se termine par( nom de fichier, ".JPG" ),
// dt = Ouvrir( répertoire || nom de fichier );
résumé << addrows( 1 );
résumé : nom = nom de fichier ;
//summary:rows = N Rows( dt );
// Fermer( dt, "nosave" );
);
);
Re : Comparaison de plusieurs colonnes JSL avec un nombre fixe à l'aide de la boucle for et génération d'une nouvelle colonne pour outBonjour @Stokes ,
Bienvenue dans la communauté JSL. La communauté devrait pouvoir vous aider à résoudre votre problème. Cependant, pour vos futurs messages, puis-je suggérer une petite chose, lorsque vous postez du code, veuillez insérer en utilisant l'une des options suivantes indiquées ci-dessous. Cela aidera à formater le code et permettra aux utilisateurs de la communauté de comprendre plus facilement votre code et de répondre à vos questions.

Maintenant que nous avons résolu ce problème, voyons comment résoudre votre problème :
Si j'ai bien compris votre question -
1. Comment comparer les colonnes d'une table de données avec n'importe quel paramètre ?
2. Pourquoi une référence de colonne ( Col = Column(dt,i); ) ne remplace-t-elle pas directement un nom de colonne (:Col1) dans un appel de fonction ?
J'essaierai de répondre à ces questions du mieux que je peux - veuillez donc me faire savoir si je n'aborde rien dans ma réponse.
Clear Globals(); Clear Log();
// Open Sample Data
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Acquire Column Names
ColNames = dt1 << Get Column Names("String");
// Define a searchword and look for it in column names
DesiredColsPos1 = list();
DesiredColsPos2 = List();
KeyWord1 = "age";
for(i = 1 , i <= N Cols(dt1), i++,
If(Contains(ColNames[i],KeyWord1),
Insert Into(DesiredColsPos1,i);
);
);
// Display Result
Show(DesiredColsPos1);
// Alternatively
for(i = 1 , i <= N Cols(dt1), i++,
Col = Column(dt1,i); // This gets a reference for the column
Show(Col);
ColName = Col << Get Name;
If(Contains(ColName,KeyWord1),
Insert Into(DesiredColsPos2,i);
);
);
// Display Result
Show(DesiredColsPos2);