J'ai deux listes extraites d'un ensemble de données, une liste contient des noms de colonnes et une autre, certaines valeurs extraites (une valeur de chaque colonne) en fonction de certaines conditions.
List1 = {Poids en poids, absorption d'O2......} ;
Liste2 = {38,59.08.....} ;
Après cette étape, l'utilisateur obtient une table JMP comme celle ci-dessous en sortie avec des options pour supprimer ou non la valeur extraite par le script :

L'utilisateur supprime la valeur de la table principale ou décide de la conserver.
Ce que j'essaie en outre de faire, c'est :
1) J'exécute un script pour trouver les valeurs minimales, et si la valeur correspond à la valeur de cette colonne (ce qui signifie que l'utilisateur a décidé de conserver la valeur), je souhaite obtenir la valeur minimale suivante
2) Sinon, j'extrais la valeur minimale telle quelle.
dt = current data table();
colNamesList = dt << get column names( string, numeric, continuous );
nc = N Items( colNamesList );
Names = {};
MinVals = {};
MinValList = {};
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
Insert into(Names, colNamesList[i]);
MinValue = Col Min( Cols );
Insert into(MinVals, MinValue);
MinRows = dt << get rows where( As Column( Cols ) == MinValue );
Insert into(MinValList, MinRows[1]);
);
dt1 = new table( "Data",
New Column( "Column Name", character, nominal, values(Names)),
New column( "Min value", numeric, nominal, values( MinVals)),
New Column( "Row Number", expression, nominal, values( MinValList ));
);Comment puis-je faire correspondre les valeurs pour vérifier pour chaque ligne si l'utilisateur a supprimé la valeur ou non ?
//Second Part
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
colMin = Col Min( Cols );
//If value in Col min is equal to value in MinValue, then skip that value and choose the next minimum value, else add that value to a new list
@cwillden Je suis désolé, ça ne marche toujours pas pour moi. Je veux juste vérifier si les valeurs minimales sont toujours présentes dans les colonnes du tableau Linnerud. Mais je ne parviens pas à faire fonctionner ce script.
J'aurais probablement dû inclure un "[1]" à la fin de cette définition pour row_temp. Désolé, je tire un peu de la hanche ici sans réellement passer par JMP avec un exemple de tableau de données.Assurez-vous de mettre le tout entre parenthèses avant d'ajouter le [1].
(row_tmp <SPAN class="token operator">=</SPAN> dt1 <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get Rows Where</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">:</SPAN>Column Name <SPAN class="token operator">==</SPAN> Cols<SPAN class="token punctuation">))[1]</SPAN><SPAN class="token punctuation">;</SPAN>
Vous comparez probablement également à un objet de nom plutôt qu'à une chaîne.Pour obtenir le nom de la colonne sous forme de chaîne, essayez ceci :
Cols = Column(dt, 1) << Get Name;
Je pense qu'avec ces deux changements, cela devrait fonctionner.
@cwillden

J'obtiens cette sortie pour row_tmp
Vous pourriez faire quelque chose comme ceci :
For( i = 1, i <= nc, i++,
Cols = Column( dt, i );
colMin = Col Min( Cols );
//If value in Col min is equal to value in MinValue,
//then skip that value and choose the next minimum value, else add that value to a new list
//get the corresponding row in the table (if it doesn't align with the index of your loop)
row_tmp = dt1 << Get Rows Where(:Column Name == Cols);
if(Min value[row_tmp] == colMin,
//Insert Code to look for next smallest value
)
)
row_tmp obtient la ligne dans dt1 où la valeur de Column Name correspond au nom de colonne actuel dans Cols.