Ignorando las filas "Excluidas"Hola,
Todavía estoy tratando de superar la "joroba" de JSL, así que perdone la pregunta fundamental.
La cuestión:
- Tengo una tabla de muestra que contiene conjuntos de datos para tres réplicas con el sufijo de muestra a1, a2 y a3.
- A veces, una de las réplicas debe establecerse en el estado "Excluido" (el ejemplo a continuación es a2)
- Estoy escribiendo un script por lotes que abrirá una tabla y aplicará los cálculos solo a los conjuntos que no fueron excluidos.
- Sin embargo, todavía no estoy allí con mi intento (que se muestra a continuación) ya que aún se están considerando los datos de los tres.
- Siento que puede ser necesaria una declaración "y" para identificar filas no excluidas y luego aplicar la búsqueda de sufijos.
Cualquier entrada, sería muy apreciada.
gracias neil
states = Current Data Table() << Get Row States();
For( i = 1, i <= N Rows( states ), i++,
rs = As Row State( states[i] );
if (Excluded(rs)==0,
a1 = dt << Get Rows Where(Contains(:Sample,"a1"));
a2 = dt << Get Rows Where(Contains(:Sample,"a2"));
a3 = dt << Get Rows Where(Contains(:Sample,"a3"));
);
)
Ingeniería de Calidad y ProcesosRe: Ignorar filas "Excluidas"Definitivamente eche un vistazo tanto a la plataforma de tabulación como a la función de resumen JSL, creo que ambas pueden obtener su respuesta con bastante rapidez.
Re: Ignorar filas "Excluidas"¡Muchas gracias!
Le daré una oportunidad a esto y veré cómo va.
La intención original era simplemente tomar la porosidad de una fila para cada conjunto (a1, a2 y a3) y obtener la media. La porosidad es la misma para cada réplica, pero no se pudo encontrar una manera más fácil de extraer solo 3 puntos distintos y un promedio.
Otra vez, gracias por el aporte.
neil
Re: Ignorar filas "Excluidas"Aquí hay una secuencia de comandos actualizada que analiza cada especie en la tabla de datos del iris y calcula la media de las filas que coinciden con ese criterio.Dicho esto, ahora que entiendo mejor lo que está haciendo, probablemente haría esto de manera diferente y usaría tabular para encontrar esos valores en su lugar.
Names default to here(1);
//Make a sample dataset with some excluded rows
dt = Open("$Sample_data/iris.jmp");
excluded rows to set = [ 4, 9, 52 ];
dt << Select Rows( excluded rows to set );
dt << Exclude(1);
species list = {"setosa", "versicolor", "virginica"};
//For each species
for(s=1, s<= n items (species list), s++,
//Find all matching rows and load in associative array, useful for Remove From function later
species matches = associative array(dt << Get Rows Where(:Species == species list[s]));
//get excluded rows
excluded rows = dt << get excluded rows();
//remove excluded rows from the list of rows matching the species
Remove From (species matches, excluded rows);
//get the matching rows as a list, use that to find which rows to average
mn = mean( :Sepal length[speciesmatches << get keys] );
//output averages to the log
write(species list[s] || " mean = " || char(mn) || "\!n")
);
Opción usando tabular:
Names default to here(1);
//Make a sample dataset with some excluded rows
dt = Open("$Sample_data/iris.jmp");
excluded rows to set = [ 4, 9, 52 ];
dt << Select Rows( excluded rows to set );
dt << Exclude(1);
//New column with the check for each value
New Column("Species_", Character, "Nominal", Formula(If(Contains(:Species, "se"), "se", Contains(:Species, "ve"), "ve", Contains(:Species, "vi"), "vi")));
//tabulate to find averages - script copied from 'source' of data table after selecting
//'make into data table' from tabulate platform, then inserted dt reference
dtTab = (dt << Tabulate(
Set Format( Mean( :Sepal length( 10, 4 ) ) ),
Add Table(
Column Table( Analysis Columns( :Sepal length ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Species_ ) )
)
)) << Make Into Data Table;
//Now get values from the table
dtTab:"Mean(Sepal length)"n[dtTab << Get Rows Where(:Species_ == "se")];Re: Ignorar filas "Excluidas"yo,
Muchas gracias por la entrada. Todavía soy un poco novato, pero probé el concepto de matriz asociativa. Se muestra el código y funcionará hasta "Obtener claves". Sin embargo, todavía no estoy seguro de cómo obtener la información que necesito de "coincidencias de especies" para hacer los cálculos necesarios (se enumeran las últimas 6 líneas). Tomé una imagen de una tabla típica que contendría conjuntos excluidos.
neil
dt = Open( path );
// Find row that were excluded and load into list
Exc_row = dt << Get Excluded Rows;
dt << Select Rows( Exc_row );
dt << Exclude(1);
//Find all matching rows and load in associative array, useful for Remove From function later
species matches = associative array(dt << Get Rows Where(Contains(:Sample,"a1") |Contains(:Sample,"a2") |Contains(:Sample,"a3")));
//get excluded rows
Exc_row = dt << get excluded rows();
//remove excluded rows from the list of rows matching the species
Remove From (species matches, Exc_row);
//get the matching rows as a list
speciesmatches << get keys;
// What needs to be done to get mean of three (or 2 sets in the case of exclusion see table image)
a1 = dt << Get Rows Where(Contains(:Sample,"a1"));
a2 = dt << Get Rows Where(Contains(:Sample,"a2"));
a3 = dt << Get Rows Where(Contains(:Sample,"a3"));<BR />
c1 = Column("Image A pore area (%)");
mean1 = Mean(c1[a1[1]], c1[a2[1]], c1[a3[1]]);
Re: Ignorar filas "Excluidas"Parece que está iterando sobre la lista de filas excluidas pero luego hace el mismo análisis cada vez, lo que en realidad no hace referencia a la lista de filas excluidas en ninguna parte.Aquí hay una forma que podría resolver su problema, que obtiene filas coincidentes y filas excluidas, y luego simplemente elimina las filas excluidas de la lista.
Names default to here(1);
//Make a sample dataset with some excluded rows
dt = Open("$Sample_data/iris.jmp");
excluded rows to set = [ 4, 9, 52 ];
dt << Select Rows( excluded rows to set );
dt << Exclude(1);
//Find all matching rows and load in associative array, useful for Remove From function later
species matches = associative array(dt << Get Rows Where(:Species == "setosa"));
//get excluded rows
excluded rows = dt << get excluded rows();
//remove excluded rows from the list of rows matching the species
Remove From (species matches, excluded rows);
//get the matching rows as a list
speciesmatches << get keys;