Sélectionner les colonnes contenues dans la liste fournie par l'utilisateur<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie de comprendre comment utiliser une liste spécifiée par l'utilisateur pour sélectionner les colonnes de données contenues dans la liste.La liste fournie par l'utilisateur peut contenir plus ou moins de noms que ceux présents dans la table de données.Par exemple, j'ai essayé ce qui suit mais je n'arrive pas à le faire fonctionner.Toute idée serait appréciée.Merci
dt = open("$SAMPLE_DATA/Big Class.jmp");
// Récupère la liste des noms de colonnes de données
col_list = dt << Obtenir les noms de colonne ( String );
// Noms de colonne spécifiés par l'utilisateur
cc = { sexe, poids, test, nouveau, ancien } ;
pour( i=1, i<=ncol( cc ), i++,
si(contient(col_list, cc ),
Colonne (dt, col_list ) << Définir la sélection ( 1 )
)
);
Re : Sélectionner les colonnes contenues dans la liste fournie par l'utilisateurSP,
Merci pour votre aide.Je vois maintenant que ma réflexion sur la colonne à boucler était ce qui me causait une partie de mon chagrin antérieur.J'ai supposé que je bouclerais et sélectionnerais les colonnes répertoriées dans la liste des variables de la table de données, et non la liste spécifiée par l'utilisateur.Toujours apprendre quelque chose de nouveau ici.Merci.
Re : Sélectionner les colonnes contenues dans la liste fournie par l'utilisateurJe ne cherchais pas dans les détails de la sortie. Vous faites une boucle sur cc, alors vous devriez vous référer à cc plutôt que col_list pour obtenir le résultat souhaité.
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
// Récupère la liste des noms de colonnes de données
col_list = dt << Obtenir les noms de colonne ( chaîne ) ;
// Noms de colonne spécifiés par l'utilisateur
cc = { sexe , lester , test , nouveau , vieux } ;
Pour ( je = 1 , je <= N articles ( cc ) , je ++,
Si ( Contient ( col_list , Carboniser ( cc [ je ] ) ) ,
Colonne ( dt , Carboniser ( cc [ je ] ) ) << Définir la sélection ( 1 )
)
) ;
// ça marche aussi
Pour ( je = 1 , je <= N articles ( cc ) , je ++,
Si ( Contient ( col_list , Carboniser ( cc [ je ] ) ) ,
: ( cc [ je ]) << Définir la sélection ( 1 )
)
) ;
Re : Sélectionner les colonnes contenues dans la liste fournie par l'utilisateurSalut MS,
Merci pour les conseils.Bien que le code que vous avez fourni s'exécute, il ne sélectionne pas uniquement les colonnes répertoriées dans la liste spécifiée par l'utilisateur.Par exemple, le code répertorié ci-dessus sélectionne les deux premières colonnes (nom et sexe) même si le sexe ne figure pas dans la liste spécifiée par l'utilisateur.Je pensais que cette construction de liste parcourait et trouvait ces numéros de colonne dans col_list qui correspondent à ceux situés dans cc, puis les sélectionnait.Il semble qu'il sélectionne en fait les colonnes en fonction de la position dans cc, pas du nom.Est-il possible de sélectionner les colonnes en fonction des noms correspondants, et non de la position ?
Re : Sélectionner les colonnes contenues dans la liste fournie par l'utilisateurPresque là. Utilisez N Items() au lieu de ncol() pour les listes. Et pour faire correspondre deux éléments, les deux doivent avoir le même type de données. Donc, fournissez la liste fournie par l'utilisateur sous forme de liste de chaînes ou utilisez Char() comme ci-dessous.
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
// Récupère la liste des noms de colonnes de données
col_list = dt << Obtenir les noms de colonne ( chaîne ) ;
// Noms de colonne spécifiés par l'utilisateur
cc = { sexe , lester , test , nouveau , vieux } ;
Pour ( je = 1 , je <= N articles ( cc ) , je ++,
Si ( Contient ( col_list , Carboniser ( cc [ je ] ) ) ,
Colonne ( dt , col_list [ je ] ) << Définir la sélection ( 1 )
)
) ;