Mantenga las columnas que coinciden con una lista, elimine el restoHola -
Me gustaría eliminar columnas (según los nombres de las columnas) de una tabla de datos que sí no coincidir con una lista. Tengo el siguiente código JSL hasta ahora, pero no funciona.
Se agradece la entrada.
Names Default To Here( 1 );
bigClass = Open( "$SAMPLE_DATA/Big Class.JMP" );
dt = Current Data Table();
col_of_interest = {"name", "age", "weight"};
col_names = dt << Get Column Names( String );
For(j = 1, j <= N Items( col_of_interest ), j++,
For( i = N Items( col_names ), i > 0, i--,
if ( not( col_names[i] == col_of_interest[j],
Remove From( col_names, i ))
);
);
);
dtNew = dt << subset( all rows, columns( col_names ) ); Wait( 0 );
ScriptingVentanasRe: mantener columnas que coinciden con una lista, eliminar el restoRecordaría todas las columnas de la tabla de datos y las eliminaría cuando fuera necesario (si desea mantener su idea, también puedo ayudar a depurar eso):
Names Default To Here(1);
bigClass = Open("$SAMPLE_DATA/Big Class.JMP");
dt = Current Data Table();
col_of_interest = {"name", "age", "weight"};
col_names = dt << Get Column Names(String);
For(i = 1, i <= N Items(col_names), i++,
If(!Contains(col_of_interest, col_names[i]),
dt << Delete Columns(col_names[i]);
);
);
Wait(0);También sugeriría no usar J como nombre de variable, ya que JMP tiene una función matricial J ().
Editar:
Además, no es necesario usar Current Data Table () (y no debería) porque ya tiene la referencia después de abrir la tabla. También aquí está mi método preferido para eliminar columnas (usando una matriz asociativa para obtener solo las columnas adicionales y eliminarlas):
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.JMP");
col_of_interest = {"name", "age", "weight"};
//get columns which are "extra"
col_names_aa = Associative Array(dt << Get Column Names(String));
col_names_aa << Remove(Associative Array(col_of_interest));
col_names_to_remove = col_names_aa << get keys;
Show(col_names_to_remove);
dt << Delete Columns(col_names_to_remove);Re: mantener columnas que coinciden con una lista, eliminar el restoAl comparar dos listas, me resulta más fácil hacer una tercera lista para contener los resultados mientras trabajo en los bucles y luego usar la tercera lista para tomar medidas cuando todo el bucle esté completo.El siguiente código puede lograr lo que está intentando.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
col_of_interest = {"name", "age", "weight"};
col_names = dt << Get Column Names( String );
col_list = {};
For( i = N Items( col_names ), i > 0, i--,
if(contains(col_of_interest, col_names[i]),
insert into(col_list, col_names[i])
);
);
dtNew = dt << subset( all rows, columns( col_list ) );
Wait( 0 );
Re: mantener columnas que coinciden con una lista, eliminar el restoGracias por la entrada y el consejo sobre la función matricial J, jthi. Déjame volver a intentarlo.