Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?Salut,
Je cherche des conseils concernant l'obtention de colonnes contenant certains mots qui m'intéressent.
Par exemple:
Je souhaite obtenir tous les noms de colonne contenant "Number" dans les exemples de données fournis ci-dessous. La liste de noms de colonnes renvoyée attendue doit être {"Flight Number" , "Tail Number"}. Cependant, je n'arrive pas à récupérer quoi que ce soit. Mes codes sont les suivants :
dt = open("$SAMPLE_DATA/Air Traffic.jmp");
a= "Number";
col=dt<<GET column="" names=""></GET>
Toute aide ou conseil sera grandement apprécié! Merci d'avance!
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?Non.Le type de colonne est caractère.
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?C'est assez différent du fil d'origine.Je propose de créer un nouveau sujet.Votre colonne d'étape a-t-elle un type de données numérique ?
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?Salut,
Je suis coincé avec un problème similaire. Je dois vérifier si les colonnes contiennent l'une des 2 chaînes, puis remplacer la valeur de la colonne par la valeur d'une autre colonne.
Voici le code -
For(i=1,i<= NRows(dt),i++,
if(contains(:step[i],"NA")| contains(:step[i],".") ,
:step[i] = description[i];
)
);
Mais j'obtiens une erreur disant - l'argument est un mauvais type dans l'accès ou l'évaluation de 'Contient'
Qu'est-ce que je fais de mal ici ?
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Merci encore Ian.
Votre solution fonctionne comme un charme!
Cordialement,
Val
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?Vous devez faire la distinction entre une liste et le type d'éléments qu'elle contient (qui, en général, n'ont pas besoin d'être homogènes). L'erreur est due au fait que vous essayez de placer la liste xxx (qui contient des éléments contenant tous des caractères) dans une cellule d'une colonne de caractères.
La meilleure façon de procéder dépendra de ce qui se passe ensuite dans votre code. Je soupçonne que vous voudrez peut-être avoir 'AvaliableColumns' comme colonne d'expression, plutôt qu'une colonne de caractères :
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = {"Number", "Flight"};
col = dt << get column names( string );
nc = N Items( col );
dt1 = New Table( "Table1" );
c1 = (dt1 << New Column( "SelectedNames", character, set values( a ) )) << get values;
dt1 << New Column( "AvailableColumns", expression );
For( j = 1, j <= N Items( c1 ), j++,
xxx = {};
For( i = 1, i <= nc, i++,
If( Contains( col[i], a[j] ), InsertInto(xxx, col[i]) );
);
Column( dt1, 2 )[j] = xxx;
);
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?Salut Ian Ian@JMP ,
Une extension de ce sur quoi je travaillais auparavant :
En utilisant les mêmes données que la question précédente, sur la base des mots sélectionnés que je veux dans les colonnes disponibles dans le tableau de données "Trafic aérien", j'attends une sortie comme indiqué ci-dessous si les colonnes disponibles dans les données contiennent les mots dans le " SelectedNames" sur leurs lignes respectives :

Cependant, je reçois ce message d'erreur dans le journal et aucune insertion de noms de colonne corrects dans la deuxième colonne :


Ce sont mes codes, pouvez-vous m'aider à vérifier ce qui ne va pas avec eux ?
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = {"Number", "Flight"};
col = dt << get column names( string );
nc = N Items( col );
dt1 = New Table( "Table1" );
c1 = (dt1 << New Column( "SelectedNames", character, set values( a ) )) << get values;
dt1 << New Column( "AvailableColumns", character );
xxx={};
For( j = 1, j <= N Items( c1 ), j++,
For( i = 1, i <= nc, i++,
If( Contains( col[i], a[j] ),
Insert Into( xxx, col[i] )
);
Column( dt1, 2 )[j] = Eval( xxx );
xxx = {};
);
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?Merci Ian !
Exactement la solution que je recherche.
Cordialement,
Val
Re : Comment obtenir des noms de colonnes contenant certains mots donnés par l'utilisateur ?N'oubliez pas que 'col' sera une liste. Alors essayez :
dt = Open( "$SAMPLE_DATA/Air Traffic.jmp" );
a = "Number";
col = dt << get column names( string );
nc = N Items( col );
xxx = {};
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ),
Insert Into( xxx, col[i] )
)
);
Imprimer ( xxx ) ;