Excluir columnas seleccionadasHola,
Obtengo una lista variable de columnas de una fuente y selecciono estas columnas en mi tabla de datos. La tabla de datos tiene muchas otras columnas, pero quiero ocultar/excluir las columnas que no están en la lista que se me proporcionó mientras se ejecuta mi secuencia de comandos y se realizan algunos análisis...
Puedo seleccionar todas las columnas que no necesito por línea a continuación:
dt <
Siguiente paso: excluir estas columnas seleccionadas. ¿Cómo puedo hacer eso?
Del libro de secuencias de comandos, puedo ver columna("X") << excluir(1) excluiría la columna con el nombre X, pero ¿hay algún método para excluir las columnas ya seleccionadas?
Gracias.
Re: Excluir columnas seleccionadas¡¡¡Gracias!!! También me di cuenta de eso, pero fue un poco más largo. Esto es perfecto 
Re: Excluir columnas seleccionadasAquí está la sintaxis de cómo hacer esto:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
Column( dt, 4 ) << set selected( 1 );
Column( dt, 5 ) << set selected( 1 );
selcols = dt << get selected columns;
For( i = 1, i <= N Items( selcols ), i++,
Column( dt, selcols[i] ) << exclude( 1 )
);
Re: Excluir columnas seleccionadasLamento resucitar este hilo, pero tengo la misma pregunta y quería una dirección si este enfoque funcionaría y cómo mejorarlo:
//List of wanted columns<BR />col_names = (":Col A", ":Col B", etc);
<BR />//Iterates through list and uses the string names to identify and select
for( i = 1, i <= N Items(dt), i++,
Column( dt, col_names[i] ) << set selected
);
dt << Invert Column Selection</CODE></P></LINGO-BODY><LINGO-SUB id="lingo-sub-521501" slang="en-US" mode="NONE">Re: Excluir columnas seleccionadas</LINGO-SUB><LINGO-BODY id="lingo-body-521501" slang="en-US" mode="NONE"><P>Debe usar N elementos (col_names) en lugar de N elementos (dt) en el ciclo for.</P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = {"age", "sex", "weight"};
for( i = 1, i <= N Items(col_names), i++,
Column( dt, col_names[i] ) << set selected;
);
dt << Invert Column Selection;
También puede simplificar el código utilizando Seleccionar columnas
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = {"age", "sex", "weight"};
wait(1); // for demo purposes
dt << Select Columns(col_names);
wait(1); // for demo purposes
dt << Invert Column Selection;
También puede evitar invertir seleccionando las columnas correctas directamente, pero lo más probable es que sea más difícil de entender
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = Associative Array({"age", "sex", "weight"});
all_col_names = Associative Array(dt << Get Column Names("String"));
all_col_names << Remove(col_names);
dt << Select Columns(all_col_names << get keys);Re: Excluir columnas seleccionadas¡Gracias por tu respuesta, Jthi!¡Eso fue rápido!
Acabo de ver tu respuesta. He estado probando cosas diferentes y se me ocurrió una solución muy simple de 2 líneas.
cols = {"Col A", "Col B"};
dt << Select Columns(cols) << Invert Column Selection;Nunca he visto matrices asociativas utilizadas, y cuando traté de usar una en lugar de lo que tengo actualmente para col, Seleccionar columnas seleccionó una columna que no estaba en columnas, pero era solo 1 de la selección invertida. Extraño.¿Sabes por qué puede ser eso?
cols = Associative Array({"Col A", "Col B"});
dt << Select Columns(cols) << Invert Column Selection;Re: Excluir columnas seleccionadasEsto se debe a que las matrices asociativas guardarán el par de valores clave y lo más probable es que cuando use Seleccionar columnas directamente con la matriz asociativa, realmente no sepa qué hacer. Por lo general, no debería seleccionar nada y luego invertirlo seleccionaría todas las columnas (puede haber algunos casos en los que la matriz asociativa se evaluaría como 1, por lo que seleccionaría la primera columna).
Para sacar las claves de la matriz asociativa, puede usar << obtener claves.
Names Default To Here(1);
cols_list = {"Col A", "Col B"};
cols_aa = Associative Array({"Col A", "Col B"});
Show(cols_list);
Show(cols_aa);
Show(cols_aa << get keys);
Puede leer más sobre matrices asociativas en la página de ayuda de JMP Guía de secuencias de comandos > Estructuras de datos > Matrices asociativas . En este caso, podría haberlos usado debido a sus operaciones establecidas.