¿Cómo encuentro filas con los mismos valores para dos columnas en una columna dada?Por ejemplo, las columnas 1 —— 3 aquí:
dt = Open( "$SAMPLE_DATA\Missing Data Pattern.jmp" );
dt<<NEW column=""></NEW>

¡Gracias!
Automatización y secuencias de comandosRe: ¿Cómo encuentro filas con los mismos valores para dos columnas en una columna determinada?¡Gracias por su ayuda!

Re: ¿Cómo encuentro filas con los mismos valores para dos columnas en una columna determinada?@lwx228 , @txnelson ,
Solo por el gusto de hacerlo...
- Agregado @lwx228 datos de ejemplo para @txnelson , consulte la tabla de datos JMP adjunta JN_AdjacentPlus.jmp
- La siguiente secuencia de comandos está incrustada en la tabla. El script se llama "Buscar filas con columnas adyacentes coincidentes", en realidad los valores coincidentes no están vacíos.
- Nota #1: Este script tomará cualquier número de columnas. No es necesario que las columnas sean adyacentes en la tabla de datos, simplemente cambie la especificación de la columna en la definición de xmat.
- Nota #2: Abs(x1-x2) asegura que las coincidencias adyacentes devuelvan cero y todos los demás valores sean > 0.
- Nota #3: Vmin() encuentra el mínimo de cada columna de una matriz. Entonces, transpose( Vmin(transpose(Abs(x1-x2))) ) devuelve el mínimo de fila de Abs(x1-x2)
- Nota #4: Loc( vec ==0 ) devuelve los números de fila cuyo valor es cero.
- Nota #5: La solución de Jim encuentra cualquier coincidencia, este script encuentra coincidencias adyacentes.
Names Default to Here(1);
dt = current data table();
xmat = dt[0,1::4];
nc = ncol(xmat);
x1 = xmat[0,1::nc-1];
x2 = xmat[0,2::nc];
idx = Loc( Transpose(Vmin(Transpose(abs(x1-x2)))) == 0);
dt << New Column("t1", numeric, continuous);
:t1[idx]=1;
Re: ¿Cómo encuentro filas con los mismos valores para dos columnas en una columna determinada?¡Gracias Jim!
Mode( dt[i, 1::3] || [-999] ) == -999
Re: ¿Cómo encuentro filas con los mismos valores para dos columnas en una columna determinada?Aquí hay una visión diferente sobre el tema.Estoy usando una función Mode() para ver cuál es el modo.Si existe un modo real, eso significa que al menos 2 valores coinciden y, por lo tanto, la columna t1 se establecerá en 1. Consulte los comentarios de JSL para obtener una explicación más completa.
He adjuntado una tabla de datos que utilicé para la prueba.
Names Default To Here( 10 );
dt = Current Data Table();
New Column( "t1" );
For( i = 1, i <= N Rows( dt ), i++,
// add a value to the matrix that is less
// than any value in the data table. If
// the mode() function does not find an
// actual mode, it returns the smallest
// value from the matrix, so if that is
// the value returned, you know there
// are not at least 2 values that equal
// each other in the columns
If( Mode( dt[i, 0] || [-999] ) == -999,
dt:t1[i] = .,
dt:t1[i] = 1
)
);
Re: ¿Cómo encuentro filas con los mismos valores para dos columnas en una columna determinada?
dt = Current Data Table();
x = dt << Get As Matrix();
For( i = 1, i <= N Row( dt ), i++,
For( j = 1, j <= 2, j++,
If( x[i, j] == x[i, j + 1],
x[i, 5] = 1;
Break();
)
)
);
dt[0, 0] = x;