Problema con el formato condicional (color) usando el bucle 'para cada fila' y anidado 'para'Hola,
Estoy al final de un script en el que he resumido un montón de datos en varias columnas (tanto numéricas como de caracteres).
Hacer un bucle para formatear celdas numéricas que cumplan con ciertos criterios es bastante fácil, pero tengo algunos problemas para asignar un color a las columnas de caracteres que contienen una determinada subcadena.
Por ejemplo, una celda (con el siguiente contenido: 1, 1, 2, 1, 1, 2, 3, 3) debe ser de color rojo porque contiene en 1 aparición del carácter '3'.
Si especifico todo el contenido de la celda, no hay problema, pero trato de buscar '3' y colorear en consecuencia -> falla.
Agregué los guiones a continuación.
Cualquier sugerencia sera apreciada.
Mejor,
Sébastien
Names Default To Here( 1 );
clear log();
dt = New Table( "test",
Add Rows( 8 ),
New Column( "unique_group_id",
Character,
"Nominal",
Set Values(
{"ELN-19-0588-A", "ELN-19-0588-B", "ELN-19-0588-C", "ELN-19-0588-D",
"ELN-19-0588-E", "ELN-19-0588-F", "ELN-19-0588-G", "ELN-19-0588-H"}
),
Set Display Width( 115 )
),
New Column( "FOB max",
Character,
"Nominal",
Set Selected,
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,3,0,0,1,0,2", "1,1,2,1,1,2,3,3", "0,0,0,0,0,0,0,0",
"4,2,2,3,2,3,3,4", "1,0,0,1,1,1,1,1"}
)
),
New Column( "glib1 % PBS - potatoe",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Selected,
Set Values( [100, 113.39, 108.3, 156.38, 822.21, 768.51, 487.2, 222.56] )
),
New Column( "calb (IHC) cere",
Character,
"Nominal",
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0", "3,4,3,4,3,3,3,4", "3,3,3,5,2,3,3,3",
"0,0,0,0,0,0,0,0", "0,0,0,0,0,0,1,0"}
)
)
);
wait(2);
col=dt <<GET column="" names="">200,
column(col[i]) << color cells( "Light Red", Row())
)
)));
//Does not work - it needs to be an exact match
c="FOB";
b={"3"};//trying to look for cells in columns labelled with FOB whihc contains the character '3'
For(i=1,i<=nc,i++, if( Contains( col[i], c ),
for each row(
If( contains(b,as column(col[i])),
column(col[i])<< color cells( "Light Red", Row())
)
)));
wait (2);
//Works when specifying exactly the content of the cell(s) to match
c="FOB";
b={"1,1,2,1,1,2,3,3"};
For(i=1,i<=nc,i++, if( Contains( col[i], c ),
for each row(
If( contains(b,as column(col[i])),
column(col[i])<< color cells( "Red", Row())
)
)));
</GET>Tabla de datosScriptingRe: Problema con el formato condicional (color) usando 'para cada fila' y bucle anidado 'para'Estaba especificando su función Contains () al revés y estaba haciendo sus comparaciones JMP Lists.Arregle esos y funciona bien.

Names Default To Here( 1 );
clear log();
dt = New Table( "test",
Add Rows( 8 ),
New Column( "unique_group_id",
Character,
"Nominal",
Set Values(
{"ELN-19-0588-A", "ELN-19-0588-B", "ELN-19-0588-C", "ELN-19-0588-D",
"ELN-19-0588-E", "ELN-19-0588-F", "ELN-19-0588-G", "ELN-19-0588-H"}
),
Set Display Width( 115 )
),
New Column( "FOB max",
Character,
"Nominal",
Set Selected,
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,3,0,0,1,0,2", "1,1,2,1,1,2,3,3", "0,0,0,0,0,0,0,0",
"4,2,2,3,2,3,3,4", "1,0,0,1,1,1,1,1"}
)
),
New Column( "glib1 % PBS - potatoe",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Selected,
Set Values( [100, 113.39, 108.3, 156.38, 822.21, 768.51, 487.2, 222.56] )
),
New Column( "calb (IHC) cere",
Character,
"Nominal",
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0", "3,4,3,4,3,3,3,4", "3,3,3,5,2,3,3,3",
"0,0,0,0,0,0,0,0", "0,0,0,0,0,0,1,0"}
)
)
);
wait(2);
col=dt <<GET column="" names="">200,
column(col[i]) << color cells( "Light Red", Row())
)
)));
//Does not work - it needs to be an exact match
c = "FOB";
b = "3";//trying to look for cells in columns labelled with FOB whihc contains the character '3'
For( i = 1, i <= nc, i++,
If( Contains( col[i], c ),
For Each Row(
If( Contains( As Column( col[i] ), b ),
Column( col[i] ) << color cells( "Light Red", Row() )
);
)
)
);
wait (2);
//Works when specifying exactly the content of the cell(s) to match
c = "FOB";
b = "1,1,2,1,1,2,3,3";
For( i = 1, i <= nc, i++,
If( Contains( col[i], c ),
For Each Row(
If( Contains( As Column( col[i] ), b ),
Column( col[i] ) << color cells( "Red", Row() )
)
)
)
);</GET>
Re: Problema con el formato condicional (color) usando 'para cada fila' y bucle anidado 'para'Hola,
Cambie su código para que coincida con la línea 67 en el código siguiente.
Contains () te permite hacer un par de cosas diferentes, dependiendo de los argumentos que proporciones. Por ejemplo:
Contiene ({"gato", "perro", "ratón", "perro", "caballo"}, "perro") devuelve 2, porque la primera aparición de "perro" en la lista proporcionada está en la posición 2.
Contiene ({"ganado", "perro", "ratón"}, "gato") devuelve 0, ya que "gato" no aparece en la lista. Si queremos buscar en la lista elemento por elemento para ver si "cat" es una subcadena de algún elemento, tenemos que recorrer la lista en iteración.
Su código original es un poco como este último ejemplo: Contiene (b,: col) comprueba si el valor de la celda de la columna coincide con algún elemento en b, que ha definido como {"3"}. No se encuentra ninguna coincidencia.
Por el contrario, el nuevo código, Contiene (: col, b [1]), verifica si b [1], el primer elemento de la lista b, que es "3", está contenido en el valor de la celda de la columna. Utilizada de esta manera, la función Contiene (<>, <>) busca la subcadena <> dentro de la cadena <>, que es lo que creo que quieres.
Salud,
Brady
Contiene ({"gato", "perro", "ratón"}, "gato") devoluciones
