Eliminar columnas que no están en una listaHola chicos,
Tengo un conjunto de columnas que quiero conservar y luego eliminar todas excepto este conjunto.
Las columnas que quiero eliminar son grandes en número.
¿Hay alguna forma sencilla de hacer esto usando un script?
Gracias.Re: Eliminar columnas que no están en una lista¡Gracias! ¿Es posible crear subconjuntos de columnas que coincidan con mis criterios?
Me interesa crear subconjuntos solo de las columnas que contienen palabras clave, no solo los nombres completos (ya que tengo muchos datos).Re: Eliminar columnas que no están en una listaHola Dave, agradezco toda tu ayuda. ¡Buen blog, por cierto! Tengo un conjunto de datos muy grande que consta de más de 8000 columnas y debo conservar algunas columnas y otras no. Terminé usando un subconjunto en las primeras columnas que quiero conservar. Después, ejecuto un bucle en el resto de la tabla para conservar las columnas que coinciden con mis palabras clave, como "_M". Finalmente, uno el subconjunto y la tabla que había conservado con los nombres de columna que coinciden con mis criterios. Ahora funciona correctamente. Sin embargo, vuelvo a intentar usar la lista en el código a continuación, pero parece que no se ejecuta. ¿No se permite el uso de la lista en este caso? dt = Current Data Table(); // seleccionar la tabla de datos dt << Set Name( "Raw_Data" ); dt << Subset( Columns( 1 :: 30 ), Rows( all ), Output Table( "Subset" ) ); // conservar los nombres de las columnas principales dt << Revert(); // Conservar las columnas vt colList = Data Table( "Raw_Data" ) << Get Column Names( String ); For( i = N Cols( dt ), i >= 1, i--, If( !Contains( colList[i], "_M" ), //Conservar solo las columnas con "_M"" en el nombre dt << Delete Column( Column( colList[i] ) ) ) );Re: Eliminar columnas que no están en una listaDisculpa, quizás lo entendí mal. El código elimina elementos de la lista, no de la tabla. Pero la lista actualizada se puede usar con el comando "Subset" para generar una tabla de subconjuntos solo con las columnas que te interesan.
Más información aquí: http://www.pega-analytics.co.uk/blog/scripting-table-subsets/
Re: Eliminar columnas que no están en una lista"Hay un millón de maneras de hacer las cosas..." Talking Heads, "Qué día fue ese", 1984
Si el número de columnas a eliminar es muy grande, podría ser más eficiente crear un subconjunto de la tabla con todas las filas, conservando solo las columnas de la lista. Esto podría ahorrar muchas eliminaciones iterativas.
Aunque es posible que su solicitud no sea tan fácil.
Re: Eliminar columnas que no están en una listaHola Dave, agradezco tu rápida respuesta a mi consulta. Seguí tu código de ejemplo, pero parece que las columnas de mi lista siguen apareciendo en mi tabla. ¿Hay algo que haya pasado por alto? dt = Data Table( "temp" ); all = dt << Get Column Names( string ); vt = {"lot_id", "wf_id", "die_x"}; For( i = 1, i <= N Items( vt ), i++, pos = Contains( all, vt[i] ); If( pos > 0, Remove From( all, pos ) ); );Re: Eliminar columnas que no están en una listaLigeramente diferente, pero con la misma idea, el siguiente código elimina las columnas de una lista. En concreto, se tiene una lista de columnas ( todo ), y los elementos se eliminan si están contenidos en la lista (excl ).
all = dt << Get Column Names(string);
// assume excl is a list of column names that i want to remove
For (i=1,i<=NItems(excl),i++,
pos = Contains(all,excl[i]);
If (pos>0,
RemoveFrom(all,pos)
)
);
Re: Eliminar columnas que no están en una listaHola. Estaba leyendo esta discusión. El tema me resultó muy útil, pero no encuentro la solución. ¿Se habrá borrado o algo así? Agradecería que lo publicaras de nuevo. ¡Gracias!Re: Eliminar columnas que no están en una listaEsto podría funcionar si solo tiene elementos numéricos (valores L). Sin embargo, rara vez ocurre con los nombres de columna. Quizás podría alternar entre nombres y números usando matrices asociativas de forma inteligente.Re: Eliminar columnas que no están en una listaGracias, funcionó. Ojalá pudieras usar dos listas y restar/exponer una de la otra.Re: Eliminar columnas que no están en una listaRecorra todas las columnas para crear una lista de las columnas que desea eliminar, comparando cada columna con su lista de columnas guardadas.
Ejemplo