Comment puis-je diviser le texte d’une colonne en plusieurs colonnes ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Parfois, j'ai un ensemble de données contenant des informations dans une colonne que j'aimerais répartir sur plusieurs colonnes. Par exemple, dans l'image 1 ci-dessous, j'ai quatre identifiants rassemblés dans une seule colonne que j'aimerais diviser en quatre colonnes. Je veux que le numéro de lot (11), l'identifiant de texte (DAT), le numéro d'échantillon (001 002, etc.) et le type de fichier (.tif) soient tous divisés en colonnes individuelles (comme indiqué dans l'image 2). Quelle est la meilleure façon de le faire dans l'éditeur de formule ou en utilisant JSL. J'ai joint un exemple de fichier de données.
Ce que j'ai:
Image 1

Ce que je veux avoir :
Image 2

Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Pouvez-vous fournir des exemples de données avec des résultats avant et après pour le fractionnement et l'empilement ?
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Salut Jeff,
Cette fonction "split" et "stack" dans JMP est vraiment sympa. Je suppose que vous ne connaissez pas l'équivalent SQL ou un moyen de le faire en SQL ? Si ce n'est pas un conseil que vous donnez, ce n'est pas grave. Epargnez-moi simplement de regarder les tableaux SQL.
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Examinez la fonction "Text to Columns" et la fonction Word() pour accomplir ce que vous demandez.
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Salut,
Je travaille juste sur une extension de la fonctionnalité de test aux colonnes. J'ai une chaîne ACE_100_bb_29_icfg2 dans une colonne nommée code article. Existe-t-il un moyen de séparer ce texte par _ et de n'avoir ensuite que les 3 premiers caractères (ABC) dans le code de l'élément de colonne.
La façon dont je le fais maintenant est de supprimer toutes les autres colonnes produites par cette fonction qui est le code d'article 1, 2 et jusqu'à présent et de renommer la colonne avec ABC comme code d'article. Je me demandais s'il existe un moyen efficace de procéder.
Merci
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Jim a répondu à votre question, mais vous n'avez pas besoin d'un script.
- Sélectionnez toutes les colonnes à modifier.
- Sélectionner Cols > Standardiser les attributs .
- Cliquez sur Les attributs et sélectionnez Type de données .
- Cliquez sur Les attributs et sélectionnez Type de modélisation .
- Modifiez ces deux attributs comme vous le souhaitez.
- Cliquez sur D'ACCORD .
Les scripts sont excellents mais JMP est optimisé pour l'interaction.
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Votre code compact pour définir le type de données et le type de modélisation pour toutes les colonnes serait
dt = current data table();
for( i = 1, i <= NCols( dt ), i++,
column( dt, i ) << data type( "numeric" ) << modeling type( "continuous" );
);
Concernant votre transposition, vous devriez pouvoir obtenir ce que vous voulez en utilisant la Stack Platform
Tables==>Pile
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Re-bonjour, merci beaucoup. Cela fonctionne et mes données sont divisées. Il y a maintenant 138 colonnes portant les noms SPDATA 1 - SPDATA 138.
Je sais que cela sort un peu du thème du fil de discussion et que je devrais peut-être pouvoir le faire, mais :
Comment puis-je, dans une instruction JSL compacte, définir toutes les propriétés de colonne sur numériques et continues ?
Et deuxièmement, comment puis-je créer une table de données transformée, où les données du spectre sont UNE colonne avec des multiples de 138 lignes selon certaines données catégorielles également disponibles (valeurs date-heure qui ont la même valeur pour les 138 points de données).
Cordialement Poul RS
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Voici l'exemple tiré de la documentation du complément.Assurez-vous d'avoir installé la version 3 du complément, puis exécutez cet exemple.
bc_party = Open( "$SAMPLE_DATA\Consumer Preferences.jmp" );
com.jmp.jperk:texttocolumns( Column( bc_party , "floss delimited"), ",", bc_party );
Si cela fonctionne, utilisez ce code pour l'incorporer dans votre JSL.
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Bonjour, j'utilise JMP 13 et le complément Text to Columns est installé et je peux l'utiliser à partir des menus.
Maintenant, j'ai une colonne de caractères de tableau de données qui représente les données spectrales d'un spectrophotomètre. Il y a au total 138 sous-chaînes séparées par des virgules. Je souhaite coder en JSL, à l'aide du complément, la génération de 138 colonnes numériques contenant chacune une valeur. (Étant donné que les données proviennent d'un réseau de diodes, la séparation en longueur d'onde est constante, je ne l'ai donc pas dans les données et je n'ai donc pas besoin de la convertir.)
J'ai lu certains exemples sur la façon de procéder, mais je n'arrive pas à trouver la bonne syntaxe.
Un petit coup de pouce serait apprécié : quelle est la syntaxe pour générer 138 colonnes à partir d'une colonne spécifique à l'aide du complément ?
Merci d'avance
Poul RS
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Merci Ian. J'utilise JMP 13.1.0 et cette page est vierge.
Revenons donc à la question la plus récente, voici comment appeler du texte dans des colonnes en JSL :
dt = New Table( "Text2Col Example", Add Rows( 4 ),
New Column( "Col1", Character, "Nominal",
Set Values(
{"11 DAT 001.tif", "11 DAT 002.tif", "11 DAT 003.tif", "11 DAT 004.tif"}
)
),
New Column( "Col2", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [159.4308, 229.5031, 164.3414, 162.0241] )
)
);
dt << text to columns(delimiter(" "), columns(:Col1));Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Dans ma build 13.1, je vois :


Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?La documentation pour col << texte en colonnes est un stub vide dans l'index de script. J'ai essayé différentes combinaisons mais je n'arrive pas à le faire fonctionner. Quelqu'un de JMP peut-il nous indiquer la syntaxe appropriée ?
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?J'ai récemment posté Texte en colonnes, version 3 qui ajoute la prise en charge de l'appel de Text to Columns à partir de JSL.
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Names Default To Here( 1 );
dt = New Table( "sample",
New Column( "column 0", character, values( {"11 DAT001.tif", "11 DAT002.tif", "11 DAT003.tif", "11 DAT004.tif"} ) )
);
// Pause so you can see it working
Wait( 2 );
// add some as an example of the elements using a formula
dt << New Column( "Column 1", formula( Num( Word( 1, :column 0 ) ) ) );
dt << New Column( "Column 2", character, formula( Substr( Word( 2, :column 0 ), 1, 3 ) ) );
dt << New Column( "Column 3", character, formula( Substr( Word( 2, :column 0 ), 6, 1 ) ) );
// Now do the last one, using JSL code
dt << New Column( "Column 4", character );
For( i = 1, i <= N Rows( dt ), i++,
:Column 4[i] = Word( -1, :Column 0[i],".");
);Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Comment cela peut-il être écrit en code/JSL ?
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Parfait, c'est exactement ce que je cherchais, merci Jeff.
Re : Comment diviser le texte d'une colonne en plusieurs colonnes ?Si vous utilisez JMP 12 ou version ultérieure, vous pouvez utiliser Cols -> Utilitaires -> Texte en colonnes .

Si vous utilisez JMP 11 ou une version antérieure, vous pouvez obtenir le complément, Texte en colonnes, version 2 , qui fait la même chose que la fonction intégrée now.
Si vous souhaitez le faire manuellement, soit avec JSL, soit avec l'éditeur de formule, vous trouverez le Mot() fonction pratique. Fais-moi confiance.
