Creación de un subconjunto de columnas basado en una lista que puede contener columnas inexistentesHola usuarios,
Leí una discusión previa 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 dada. Sé que puede hacer esto fácilmente cuando las columnas de la lista dada existen en la tabla de datos que le gustaría subconjuntos.
Lo que quiero saber es cómo se hace robusto el script para que no dé el error "Columna no encontrada en el acceso o evaluación de 'Bad Argument' en el caso de que una determinada columna en la lista no exista.
Por ejemplo, en mi secuencia de comandos a continuación, quiero poder crear un subconjunto de "Big Class.jmp" con columnas, nombre, edad y altura porque existen, pero mi secuencia de comandos se descompone como está porque no tengo columna existente en la lista dada llamada, none.
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
Tabla de datosScriptingRe: Crear subconjunto de columnas basado en la lista que puede contener columnas inexistentesAquí hay 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 es así, 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>Re: Crear subconjunto de columnas basado en la lista que puede contener columnas inexistentesAquí hay una forma de usar << intersecar para determinar las columnas que existen en ambas listas.
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" ) );