¿Cómo puedo seleccionar filas que sean iguales en función de una (primera) columna pero diferentes en función de otra columna?Hola a todos.
Estoy intentando formular un script (JMP 13) que me permita aislar registros (filas) que son iguales en una columna pero diferentes en otra. En más detalle, he realizado dos observaciones/mediciones en la misma muestra, pero para algunas muestras el resultado es diferente. ¿Cómo puedo aislar estos casos? He intentado esto (y probablemente me esté perdiendo algo muy básico - disculpas):(
// Assume the columns are "ColumnA" and "ColumnB"
dt = Current Data Table(); // Reference the current data table
// Loop through each row and compare values in the specified columns
For(i = 1, i <= N Row(dt), i++,
// Compare with every other row to find matches on ColumnA but differences on ColumnB
For(j = i + 1, j <= N Row(dt), j++,
If(dt:ColumnA[i] == dt:ColumnA[j] & dt:ColumnB[i] != dt:ColumnB[j],
dt << Select Row(i);
dt << Select Row(j);
)
)
);
Cualquier ayuda con este problema será de gran ayuda.
Automatización y scriptingRe: ¿Cómo puedo seleccionar filas que sean iguales en función de una (primera) columna pero diferentes en función de otra columna?Excelente, muchas gracias Jim.
Re: ¿Cómo puedo seleccionar filas que sean iguales en función de una (primera) columna pero diferentes en función de otra columna?La función
dt << Seleccionar Dónde()
Seleccionará todas las filas que coincidan con la condición especificada a la vez, lo que eliminará el segundo bucle For(). También será mucho más eficiente. A continuación se muestra un ejemplo
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each Row(
currHt = :height[Row()];
currWt = :weight[Row()];
dt << select where( :height == currHt & :weight != currWt, current selection( "extend" ) );
);