Crear un subconjunto de columnas basado en una lista que puede contener columnas inexistentesHola usuarios,
Leí una discusión anterior relacionada con este tema pero no encontré todas las respuestas.
Me gustaría saber cómo crear un subconjunto de columnas basado en una lista de columnas determinada. Sé que puedes hacer esto fácilmente cuando las columnas de la lista dada existen en la tabla de datos que deseas subconjunto.
Lo que quiero saber es como se hace robusto el script para que no dé el error de "Columna no encontrada en acceso o evaluación de 'Bad Argument' en el caso de que una columna determinada en la lista no exista.
Por ejemplo, en mi script a continuación, aún quiero poder crear un subconjunto de "Big Class.jmp" con columnas, nombre, edad y altura porque existen, pero mi script se descompone porque no tengo un columna existente en la lista dada llamada, ninguna.
Intenté poner Try() alrededor del código pero no tuve éxito.
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
big_class_cols = dt << Get Column Names();
show(big_class_cols);
subDt1 = dt << Subset(
Columns( cols_of_interest ),
Output Table Name( "Big Class 2" )
);
"
Gracias,
Simón
Acceso a los datosCombinación y limpieza de datosRe: Crear subconjunto de columnas basado en una lista que puede contener columnas inexistentesSolución muy elegante. Funciona muy bien.
Gracias Jim!Re: Crear subconjunto de columnas basado en una lista que puede contener columnas inexistentesA continuación se muestra una forma de utilizar <
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols_of_interest = {name, age, height, none}; //names without scoping colon
AA1 = Associative Array( dt << Get Column Names() );
AA2 = Associative Array( cols_of_interest );
cols = AA2 << intersect( AA1 ) << get keys;
subDt1 = dt << Subset( Columns( cols ), Output Table Name( "Big Class 2" ) );
Re: Crear subconjunto de columnas basado en una lista que puede contener columnas inexistentesA continuación se muestra una forma sencilla de manejar esto.Simplemente verifica si cada columna de la lista cols_of_interest existe en la tabla de datos y, si no, la elimina de la lista cols_of_interest.
names default to here(1);
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For(i=nitems(cols_of_interest), i>=1, i--,
if(try(column(dt,char(cols_of_interest[i]))<<GET name=""></GET>