Ho due elenchi estratti da un set di dati, un elenco contiene i nomi delle colonne e un altro, determinati valori estratti (un valore da ciascuna colonna) in base a determinate condizioni.
List1 = {peso W, assorbimento di O2.......};
Lista2 = {38,59,08.....};
Dopo questo passaggio, l'utente ottiene una tabella JMP come quella seguente come output con le opzioni se rimuovere o meno il valore estratto dallo script:

L'utente rimuove il valore dalla tabella principale o decide di mantenerlo.
Quello che sto cercando di fare ulteriormente è:
1) Eseguo uno script per trovare i valori minimi e se il valore corrisponde al valore rispetto a quella colonna (il che significa che l'utente ha deciso di mantenere il valore) voglio ottenere il valore minimo successivo
2) In caso contrario, estraggo il valore minimo così com'è.
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 ));
);Come posso abbinare i valori per verificare per ogni riga se l'utente ha rimosso il valore o meno?
//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 Mi dispiace, ancora non funziona per me. Voglio solo controllare se i valori minimi sono ancora presenti nelle colonne della tabella di Linnerud. Ma non sono in grado di far funzionare quello script.
Probabilmente avrei dovuto includere un "[1]" alla fine di quella definizione per row_temp. Scusa, sto riprendendo un po' dall'anca qui senza effettivamente eseguirlo tramite JMP con una tabella di dati di esempio.Assicurati di racchiudere il tutto tra parentesi prima di aggiungere il [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>
Probabilmente stai anche confrontando un oggetto nome piuttosto che una stringa.Per ottenere il nome della colonna come stringa, prova questo:
Cols = Column(dt, 1) << Get Name;
Penso che con entrambi questi cambiamenti dovrebbe funzionare.
@cwillden

Ottengo questo output per row_tmp
Potresti fare qualcosa del genere:
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 ottiene la riga in dt1 in cui il valore di Column Name corrisponde al nome della colonna corrente in Cols.