Seleccionar y eliminar columnas que contienen una cadena específicaHola gente de jsl,
¿Alguien puede comentar qué hay de malo en mi codificación a continuación? Estoy intentando buscar columnas que contengan una cadena llamada "Dummy" e intento eliminarla, pero no funciona. Por favor ayuda.
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
cols = dt << get column names( string );
If( Contains( cols, "Dummy" ),
dt << Select Columns();
dt << Delete Columns();
);
Combinación y limpieza de datosRe: Seleccionar y eliminar columnas que contienen una cadena específicaFunciona ! ¡Gracias por la solución, Georg!Re: Seleccionar y eliminar columnas que contienen una cadena específicaExcelente, funciona perfectamente! Gracias !Re: Seleccionar y eliminar columnas que contienen una cadena específicaHola jthi, gracias por intentar ayudar. Descubrí que el script en realidad elimina todas las columnas independientemente de si tiene la cadena "ficticia" o no. De todos modos, Georg y Pauldeen ya dieron la solución.Re: Seleccionar y eliminar columnas que contienen una cadena específicaLigera modificación para eliminar la necesidad de una variable de lista adicional:
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
cols = dt << get column names( string );
For( i = N Items( cols ), i>=1, i--,
If( Contains( cols[i], "Dummy" ),
dt << Delete Columns( i );
)
);
Re: Seleccionar y eliminar columnas que contienen una cadena específicaEsta es una versión modificada que puede funcionar para usted y que es fácil de entender.
Necesitaría un bucle sobre las columnas para ver dónde está la cadena de caracteres.
y su uso de seleccionar y eliminar no fue correcto.
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
cols = dt << get column names( string );
delete_lst = {};
For( i = 1, i <= N Items( cols ), i++,
If( Contains( cols[i], "Dummy" ),
Insert Into( delete_lst, cols[i] )
)
);
dt << Delete Columns( delete_lst );Re: Seleccionar y eliminar columnas que contienen una cadena específicaContiene solo le dará el primer índice de una coincidencia. Puede recorrer la lista para generar una lista con columnas para eliminar o eliminar mientras realiza el ciclo:
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "A_Dummy", Character, "Nominal", Set Values( {"xx", "yy", "zz"} ) ),
New Column( "B", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "C_Dummy", Character, "Nominal", Set Values( {"l", "m", "n"} ) ));<BR />
cols = dt << get column names( string );
for(i = 1, i <= N Items(cols), i++,
If(Contains(cols[i],"Dummy"),
dt << Delete Columns(cols[i])
);
);Re: Seleccionar y eliminar columnas que contienen una cadena específicaSolo para agregar... La razón por la que pregunto esto es porque me gustaría saber si hay un montón de nombres de columnas como, por ejemplo, 50 columnas que contienen "_Dummy", ¿cómo puedo eliminarlo rápidamente sin tener que nombrar el nombres de columnas específicas utilizando el comando de eliminación de columnas conocido como "dt << eliminar columna (columna ("A_Dummy"))". Si tengo que usar este comando, tendría que escribir 50 veces todos los nombres únicos de las columnas.