Salut les utilisateurs JMP,
Je voudrais mettre à jour les noms de colonnes à partir d'un fichier de configuration en utilisant JSL et créer des tracés qui auront les noms de colonnes mis à jour dans leurs titres et axes. Je cherche des idées sur la façon dont je peux faire cela
Je joins mon code et mes tableaux pour le moment. Merci pour l'aide.
J'ai joint à quoi je voudrais que le graphique final ressemble (désiré_Bivarié)
-Simon
Names Default To Here( 1 );
dt = Open( "table_1.jmp" );
dt1 = Open( "config_table.jmp" );
dt1 << New Column( "New Column", character, formula( Column_name || "_" || additional_name ) );
graph = dt << Bivariate( Y( :height ), X( :id ) );
Essaye ça:
Names Default To Here( 1 );
dt = Open( "table_1.jmp" );
dt1 = Open( "config_table.jmp" );
for(i = 1, i <= N Rows(dt1), i++,
x = Column(dt1, "Column_name")[i];
y = Column(dt1, "additional_name")[i];
Column(dt, i) << Set Name( x || "_" || y);
);
Voici 2 approches différentes du problème qui ne changent pas le nom réel des colonnes, mais accomplissent ce que vous demandez.Le premier crée des colonnes Transform qui ont les nouveaux noms spécifiés pour l'exécution de la bivariée.Ces colonnes n'existent que pour l'exécution bivariée.

Le deuxième exemple utilise la propriété de colonne des unités pour les différentes colonnes de la table de données.Les plates-formes dans JMP honorent la propriété de colonne Unités et l'affiche comme un ajout au nom de colonne réel en plaçant la valeur Unités entre () après le nom de la colonne ..... (c'est-à-dire Hauteur (pieds))

// This version of the script used Transform variables
// to temporarially change the name of the column just
// for the running of the Bivariate
Names Default To Here( 1 );
dt = Data Table( "table_1" );
dt1 = Data Table( "config_table" );
// Loop across the columns to run the Bivariate
For( i = 2, i <= N Cols( dt ), i++,
// Check to see if a column name change is specified
// in the config table
foundRow = dt1 << get rows where(
:Column_name == Column( dt, i ) << get name & dt1
:additional_name != ""
);
// If a column name change is found make the change
If( N Rows( foundRow ) > 0,
Eval(
Substitute(
Expr(
Bivariate(
Y(
Transform Column(
__trans__,
Formula( __col__ )
)
),
X( :id )
)
),
Expr( __trans__ ),
dt1:Column_name[foundRow[1]] || "_" || dt1
:additional_name[foundRow[1]],
Expr( __col__ ),
Parse( ":" || dt1:Column_name[foundRow[1]] )
)
),
// otherwise just run the bivariate
dt << Bivariate( Y( Column( i ) ), X( :id ) )
);
);
// This version of the script takes advantage of the Units
// column property. It will automatically add (unit value) to
// the display output, without actually changing the columns
// name
Names Default To Here( 1 );
dt = Data Table( "table_1" );
dt1 = Data Table( "config_table" );
// Add the Units Column Property to the columns in the
// original data table
For( i = 1, i <= N Cols( dt ), i++,
foundRow = dt1 << get rows where(
:Column_name == Column( dt, i ) << get name & dt1
:additional_name != ""
);
If( N Rows( foundRow ) > 0,
column( dt, i ) << set property("units", eval(dt1:additional_name[foundRow[1]]));
);
);
// Now run the normal bivariates
For( i = 2, i <= N Cols( dt ), i++,
dt << Bivariate( Y( Column( i ) ), X( :id ) )
);