Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonneJ'ai une liste de colonnes que je dois agréger automatiquement. Actuellement, ce que j'essaie, c'est quelque chose comme ça, qui ne donne aucun résultat.
cols = {:col1, :col2, :col3}
Eval(Eval Expr(
dt << New Column(
Formula(Minimum(Expr(cols))
)
)J'ai également essayé de générer ceci de manière interactive et d'enregistrer la formule de la colonne. Cela fonctionne, mais me donne
Minimum(:col1, :col2, :col3)
que je ne sais pas comment recréer dans JSL.
Partage et communication des résultatsRe : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesVoici deux méthodes que vous pourriez essayer :
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols = dt << Get Column Names( "String" );
col list = {};
For Each( {col}, cols,
If( Ends With( col, "t" ), Insert Into( col list, As Name( col ) ) )
);
Eval( Eval Expr(
dt << New Column( "NEW_COL", "Numeric", <<SET formula=""></SET>Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols = dt << Get Column Names( "String" );
col list = Expr( Min() );
For Each( {col}, cols,
If( Ends With( col, "t" ), Insert Into( col list, As Name( col ) ) )
);
Eval( Eval Expr(
dt << New Column( "NEW_COL", "Numeric", <<SET formula=""></SET>Re : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesJe devine à quoi ressemble votre liste initiale de noms de colonnes, mais s'il ne s'agit que d'une liste non citée de noms de colonnes, le script ci-dessous est un exemple de la façon de la traiter
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "/C:/Program Files/SAS/JMPPRO/15/Samples/Data/Big Class.jmp" );
colNames = dt << get column names;
theList = {};
For Each( {col}, colNames,
Show( col );
If( As Column( col ) << get data type == "Numeric",
Insert Into( theList, As Column( col ) << get name )
);
);
theString = Concat Items( theList, ",:" );
Eval( Parse( "dt << new column(\!"test\!",formula(minimum(:" || thestring || ")));" ) );Re : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesMa liste réelle est définie par la correspondance regex basée sur l'entrée de l'utilisateur. Le script parcourt la liste des noms de colonnes de la table de données et insère ceux qui correspondent dans une liste.
For Each ({col}, colNames,
If (condition... Insert Into(list, :Column(col))
)J'ai essayé de changer la syntaxe en :(Colonne(colonne)) mais cela a abouti à une liste d'éléments manquants plutôt que ce que j'avais précédemment obtenu ( {Colonne(col1), Colonne(col2), ...} ). De même pour Comme colonne (col) .
J'utilise JMP 16.
Re : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesVeuillez vérifier la définition de votre liste et assurez-vous que le ":" est spécifié devant chaque nom de colonne.
Quelle version de JMP utilisez-vous ?
Re : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesMerci pour la réponse rapide! J'ai essayé ceci, mais il semble laisser la formule de colonne non résolue (comme Minimum(Eval(cols)) ).
Re : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesSalut,
Essayez cette syntaxe :
Names default to Here (1);
dt = Current Data Table ();
cols = {:col1, :col2, :col3};
dt << New Column("TEST", numerical, continuous, << Formula(Minimum(Eval(cols))));
Meilleur,
TS
Re : Comment créer un script pour une colonne agrégée à partir d'une liste variable de références de colonnesça peut donner des idées Utiliser la liste des colonnes dans les formules
Voir plus...