Conservez les colonnes correspondant à une liste, supprimez le resteSalut -
Je voudrais supprimer des colonnes (en fonction des noms de colonnes) d'une table de données qui ne ne pas correspondre à une liste. J'ai suivi le code JSL jusqu'à présent mais cela ne fonctionne pas.
Entrée appréciée.
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 );
Scriptles fenêtresRe: Conserver les colonnes correspondant à une liste, supprimer le resteJe bouclerais toutes les colonnes de la table de données et les supprimerais si nécessaire (si vous voulez garder votre idée, je peux également aider à le déboguer):
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);Je suggérerais également de ne pas utiliser J comme nom de variable, car JMP a une fonction matricielle J().
Éditer:
De plus, il n'est pas nécessaire d'utiliser Current Data Table() (et vous ne devriez pas) car vous avez déjà la référence après avoir ouvert la table. Voici également ma méthode préférée pour supprimer des colonnes (en utilisant un tableau associatif pour obtenir uniquement les colonnes supplémentaires et en les supprimant):
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: Conserver les colonnes correspondant à une liste, supprimer le resteLors de la comparaison de deux listes, je trouve plus facile de créer une troisième liste pour contenir les résultats tout en parcourant les boucles, puis d'utiliser la troisième liste pour agir lorsque toute la boucle est terminée.Le code ci-dessous peut accomplir ce que vous essayez.
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: Conserver les colonnes correspondant à une liste, supprimer le resteMerci pour l'entrée et le conseil sur la fonction matricielle J, jthi. Laissez-moi réessayer.