Bonjour à tous,
J'utilise JMP Pro 16.1.0 et j'ai besoin d'aide JSL.
J'ai une table de données qui est générée à partir de l'importation d'un fichier CSV et qui a la structure suivante (le nombre réel de colonnes est beaucoup plus grand, mais la table conserve cette structure) :

J'essaie de comprendre comment changer correctement la structure dans le format typique pour qu'un tableau de spécifications ressemble à ceci:

Finalement, les noms des colonnes seront modifiés au format JMP pour une table de données de spécifications, à savoir : "Column 1"n, "_LSL"n, "_Target"n et "_USL"n. Chaque ligne sera une spécification avec les valeurs correspondantes.
Le problème que j'ai est de savoir comment faire cela avec JSL pour automatiser le processus. J'ai essayé différentes combinaisons de Split ou Stack, mais aucune ne m'amène vraiment là où je veux aller - du moins pas dans la façon dont je les ai utilisées. Je suis sûr qu'il existe un moyen simple de le faire, mais je le manque d'une manière ou d'une autre.
Toutes les suggestions sont les bienvenues.
Merci!,
DS
Je pense que la pile devrait pouvoir le faire lors de l'utilisation de la pile de séries multiples. Les types de données doivent être les mêmes pour toutes les colonnes (au moins dans cette méthode)



puis supprimez les colonnes d'étiquettes. Changer les options de la plate-forme de pile pourrait le rendre encore plus clair, mais je n'ai pas utilisé la pile de plusieurs séries, mais c'est très puissant. je taguerai @Jeff_Perkinson ici, parce que je l'ai vu l'utiliser plusieurs fois et qu'il a peut-être de meilleurs réglages que moi.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("Column 1", Character, "Nominal", Set Values({"x1"})),
New Column("Column 2", Character, "Nominal", Set Values({"1"})),
New Column("Column 3", Character, "Nominal", Set Values({"1.1"})),
New Column("Column 4", Character, "Nominal", Set Values({"1.11"})),
New Column("Column 5", Character, "Nominal", Set Values({"x2"})),
New Column("Column 6", Character, "Nominal", Set Values({"2"})),
New Column("Column 7", Character, "Nominal", Set Values({"2.2"})),
New Column("Column 8", Character, "Nominal", Set Values({"2.22"})),
New Column("Column 9", Character, "Nominal", Set Values({"x3"})),
New Column("Column 10", Character, "Nominal", Set Values({"3"})),
New Column("Column 11", Character, "Nominal", Set Values({"3.3"})),
New Column("Column 12", Character, "Nominal", Set Values({"3.33"}))
);
// data types must be same for stack, so you might have to script it
dt_stacked = dt << Stack(
columns(
:Column 1, :Column 2, :Column 3, :Column 4, :Column 5, :Column 6, :Column 7,
:Column 8, :Column 9, :Column 10, :Column 11, :Column 12
),
Source Label Column("Label"),
Stacked Data Column("Data"),
Stack By Row(0),
Number of Series(4),
Contiguous
);
For Each({col_name}, dt_stacked << get column names("String"),
If(Contains(col_name, "Label"),
dt_stacked << Delete Columns(col_name)
);
);Il s'agit d'une pile de séries multiples utilisant Tables-> Pile.
A commencer par ce tableau.

Et en utilisant Tables-> Empiler avec l'option Empiler plusieurs séries.

Vous obtiendrez cette table.

Supprimez simplement les colonnes Label et le tour est joué.
Voici le JSL que j'ai obtenu du journal amélioré.
// Stack data table
// → Data Table( "untitled 13" )
Data Table( "untitled 11" ) << Stack(
columns(
:c00000 01, :c00000 02, :c00000 03, :c00000 04, :c00000 05, :c00000 06,
:c00000 07, :c00000 08, :c00000 09, :c00000 10, :c00000 11, :c00000 12
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 4 )
);
// Delete columns
Data Table( "untitled 13" ) << Delete Columns(
:Label, :Label 2, :Label 3, :Label 4
);