Tengo dos listas extraídas de un conjunto de datos, una lista contiene nombres de columna y otra, ciertos valores extraídos (un valor de cada columna) según ciertas condiciones.
Lista1 = {Peso, captación de O2 .......};
Lista2 = {38,59.08 .....};
Después de este paso, el usuario obtiene una tabla JMP como la que se muestra a continuación como una salida con opciones para eliminar el valor extraído por el script o no:

El usuario elimina el valor de la tabla principal o decide conservarlo.
Lo que estoy tratando de hacer es:
1) Ejecuto un script para encontrar valores mínimos, y si el valor coincide con el valor de esa columna (lo que significa que el usuario decidió mantener el valor), deseo obtener el siguiente valor mínimo
2) Si no, extraigo el valor mínimo como está.
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 ));
);¿Cómo puedo hacer coincidir los valores para verificar en cada fila si el usuario ha eliminado el valor o no?
//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 Lo siento, todavía no funciona para mí. Solo quiero comprobar si los valores mínimos todavía están presentes en las columnas de la tabla de Linnerud. Pero no puedo hacer que el script funcione.
Probablemente debería haber incluido un "[1]" al final de esa definición para row_temp. Lo siento, estoy disparando desde la cadera un poco aquí sin realmente ejecutar esto a través de JMP con una tabla de datos de ejemplo. Asegúrese de envolver todo entre paréntesis antes de agregar el [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>
Probablemente también estés comparando con un objeto de nombre en lugar de una cadena. Para obtener el nombre de la columna como una cadena, intente esto:
Cols = Column(dt, 1) << Get Name;
Creo que con ambos cambios, debería funcionar.
@cwillden

Obtengo esta salida para row_tmp
Podrías hacer algo como esto:
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 obtiene la fila en dt1 donde el valor de Nombre de columna coincide con el nombre de columna actual en Cols.