Comment utiliser la liste de colonnes pour empiler un grand nombre de colonnes<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut à tous, je souhaite lire les noms des colonnes et les enregistrer sous forme de liste de colonnes.... en utilisant cette liste, puis-je empiler ces plusieurs colonnes en une seule commande au lieu d'un empilage manuel comme le code indiqué ci-dessous ?
dt_L5 << Pile(
Colonnes(
:Nom( "MISC_L5_Test230_2(1)" ),
:Nom( "MISC_L5_Test230_2(2)" ),
:Nom( "MISC_L5_Test230_2(3)" ),
:Nom( "MISC_L5_Test230_2(4)" ),
:Nom( "MISC_L5_Test230_2(5)" ),
:Nom( "MISC_L5_Test230_2(6)" ),
:Nom( "MISC_L5_Test230_2(7)" ),
:Nom( "MISC_L5_Test230_2(8)" ),
.
.
.
.
:Nom( "MISC_L5_Test230_2(125)" )
),
Colonne d'étiquette source( "Label" ),
Colonne de données empilées( "Data" ),
Tableau de sortie( "L5" )
);
Je veux faire quelque chose comme ceci :
clist=dt_L5<
ncols = N éléments (clist);
dt_L5 << Pile(
Colonnes(
pour(i=1,i<=ncols,i++,
liste_nom = liste ;
/* COMMENT DOIS-JE APPELER LE " :Nom("liste_noms") " ici ?? */
);
Colonne d'étiquette source( "Label" ),
Colonne de données empilées( "Data" ),
Tableau de sortie( "L5" )
);
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnes
Salut,
est-ce que votre script final ressemble à ceci ?
Effacer les valeurs globales (); /* efface la mémoire résidente des exécutions précédentes*/
/* Ouvrez votre fichier*/
dt=ouvrir(
Choisir un fichier (
"Sélectionnez un fichier *.csv",
Obtenir le répertoire actuel(),
{"Tous les fichiers JMP|jmp;jsl;jrn;csv;txt", "Tous les fichiers|*"}
)
);
attendre(0);
nc_dt = N Col (); /*obtient le nombre de colonnes dans un fichier*/
attendre(0);
clist = dt < ncols = N éléments (clist);
attendre(0);
tlist={};
pour(i=2,i<=ncols,i++,
insérer dans (tlist, clist );
);
attendre(0);
dt2 << Pile (
colonnes(eval(tlist)),
Colonne d'étiquette source( "Label" ),
Colonne de données empilées( "Data" ),
Tableau de sortie( "DT5" )
);
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnesSuper! Merci MS... J'ai JMP8.0, c'est peut-être ça le problème
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnesD'accord. Pour moi, cela fonctionne aussi sans eval(). JMP 9.0.3 pour Mac.
Cela fonctionne même, c'est-à-dire créer la liste à l'intérieur de l'argument columns(). Cela peut être pratique si vous n’avez pas besoin du paramètre plus tard dans le script. Cependant, indiquer clairement les variables rend le code plus facile à lire et à déboguer.
dt1_L0 << empiler (
Colonnes ( dt1_L0 << obtenir les noms de colonnes ) ,
Colonne d'étiquette source ( "Étiquette" ) ,
Colonne de données empilées ( "Données" ) ,
Tableau de sortie ( "L5" )
) ;
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnesune recherche sur ce forum m'a dirigé vers la réponse..... eval(list) doit être utilisé.
Colliste = dt1_L5 << obtenir les noms de colonnes ;
dt1_L0 << empiler (
Colonnes ( évaluer ( Colliste ) ) ,
Colonne d'étiquette source ( "Étiquette" ) ,
Colonne de données empilées ( "Données" ) ,
Tableau de sortie ( "L5" )
) ;
Merci pour votre soutien!
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnesEncore merci! ... Après la commande stack, je reçois le message suivant dans la fenêtre de journal
"Colonne introuvable lors de l'accès ou de l'évaluation de 'Bad Argument'
Vide()"
Et je ne vois aucune sortie de table empilée... :-s J'apprécie vraiment votre aide !
Comment utiliser la liste de colonnes pour empiler un grand nombre de colonnesSoit conditionnellement comme ceci :
liste = {} ;
pour ( je = 1 , je <= ncols , je ++,
si ( je > 3 ,
insérer dans ( liste , Colliste [ je ]) ;
) ;
) ;
ou sans condition mais une initiale modifiée je :
liste = {} ;
pour ( je =4 , je <= ncols , je ++,
insérer dans ( liste , Colliste [ je ]) ;
) ;
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnesQuelque chose comme ça ?? ....
Colliste = dt1_L5 << obtenir les noms de colonnes ;
/*L'intention ici est d'enregistrer une nouvelle liste en supprimant les 3 premiers de la liste précédente*/
ncols = N articles (collist);
pour(i=1;i<=ncols;i++,
si(i>3,
tlist=colliste ;
);
);
dt1_L0 << empiler (
Colonnes ( ( liste ) ) ,
Colonne d'étiquette source ( "Étiquette" ) ,
Colonne de données empilées ( "Données" ) ,
Tableau de sortie ( "L5" )
) ;
Je ne sais même pas si la déclaration "if" est correcte ici ... veuillez excuser mon ignorance
Comment utiliser la liste de colonnes pour empiler un grand nombre de colonnesSalut MS,
Merci pour la réponse rapide. Je suis un débutant en JSL, donc je ne connais pas bien la langue. Il est bon de savoir que la pile accepte la liste comme argument.
Puis-je développer davantage la question et demander... comment pouvons-nous sélectionner seulement quelques colonnes à empiler dans la liste ? Par exemple, je ne veux pas empiler les 3 premières colonnes. À cette fin, puis-je créer une nouvelle liste qui stockera les noms de colonnes requis (supprime les 3 premiers noms de colonnes de la liste).
Ouais, j'ai trouvé une solution à mon entrée précédente, alors je l'ai supprimée
Merci beaucoup!
Re : Comment utiliser Columnlist pour empiler beaucoup de colonnesStack prend une liste comme argument, cela peut donc être fait de manière beaucoup plus simple ici.
Colliste = dt1_L5 << obtenir les noms de colonnes ;
dt1_L0 << empiler (
Colonnes ( ( Colliste ) ) ,
Colonne d'étiquette source ( "Étiquette" ) ,
Colonne de données empilées ( "Données" ) ,
Tableau de sortie ( "L5" )
) ;
Évitez les boucles for dans les commandes de la plateforme. Au fait, j'ai essayé de soumettre une réponse à votre question précédente, mais elle a été supprimée avant de cliquer sur "Ajouter une réponse". Vous avez probablement déjà trouvé une solution, mais voici mon point de vue. Encore une fois, les boucles for à l'intérieur des plates-formes peuvent ne pas toujours fonctionner car certaines commandes peuvent ne pas évaluer l'argument (par exemple, une chaîne entre guillemets est requise).
liste mensuelle = { 4 , 5 , 7 , 9 , 11 , 12 } ;
vent = Nouvelle fenetre ( "Bivarié" ,
dt1_L0 << Bivarié ( Oui ( : Données ) , X ( : Prix ) , Par ( : MOIS ) )
) ;
Pour ( je = 1 , je <= N articles ( liste mensuelle ) , je ++,
vent [ 1 , je , Boîte à cadre ( 1 )] << { Taille du cadre ( 633 , 249 ) ,
Légende des lignes ( : PLANCHERS ,
Thème de couleur ( "JMP par défaut" ) ,
Thème du marqueur ( "Standard" ) ,
)}
) ;