Eliminar columnas CHAR si solo hay un único valor, sin variación de cadena¿Me pregunto cómo puedo crear un script para que observe todas las columnas y compruebe si hay al menos dos valores diferentes y elimine todas las columnas de un solo valor? Tengo miles de columnas de "características", todas de tipo carácter, pero una cantidad considerable de ellas solo tienen un único registro... es decir, el nivel de distribución = 1.
¿Cómo detectar y eliminar columnas de 1 registro?
Automatización y scriptingRe: eliminar columnas CHAR si solo hay un valor único, sin variación de cadenaAquí hay un pequeño script simple que encuentra todas las columnas de caracteres y luego va desde el final de la lista hasta el principio y, si solo se encuentra un único valor sin contar los espacios en blanco, se elimina la columna.
Names Default To Here( 1 );
dt = Current Data Table();
charCols = dt << get column names( string, character );
For( i = N Items( charCols ), i >= 1, i--,
Summarize( dt, bygroup = by( As Column( charCols[i] ) ) );
If( bygroup[1] == "",
Remove From( bygroup, 1, 1 )
);
If( N Items( bygroup ) <= 1,
dt << delete columns( Column( dt, charCols[i] ) )
);
);
Re: eliminar columnas CHAR si solo hay un valor único, sin variación de cadenaUna idea similar a la de Jim (usar resumir para tomar valores únicos y luego eliminar los que faltan si los hay) pero con un enfoque un poco diferente: usar filtrar cada uno para encontrar las columnas a eliminar y luego eliminarlas todas al mismo tiempo usando eliminar columnas.
Names Default To Here(1);
dt = Current Data Table();
char_cols = dt << get column names(Character, String);
cols_to_remove = Filter Each({colname}, char_cols,
Summarize(dt, uniq = by(Column(dt, colname)));
Remove From(uniq, Contains(uniq, "")); // to remove missing values from list
N Items(uniq) == 1;
);
dt << Delete Columns(cols_to_remove);Re: eliminar columnas CHAR si solo hay un valor único, sin variación de cadenaAlgo a tener en cuenta: tanto Jim como yo eliminamos el valor faltante de nuestra lista de valores únicos. Según los datos, el modelo o el caso de uso, es posible que quieras (o tengas que) considerarlo como un valor independiente, así que tenlo en cuenta. Nuestros dos scripts pueden tenerlo en cuenta, PERO necesitan pequeños cambios.