Définir la formule de colonne à partir de l'entrée utilisateurSalut,
J'essaie de définir une nouvelle formule de colonne à partir de la saisie de l'utilisateur. J'ai essayé différentes combinaisons de Eval (), Eval Insert () et Parse () sans succès. Les entrées peuvent être des colonnes ou des listes de colonnes, plus un scalaire. Vous trouverez ci-dessous un exemple minimal. Aucune suggestion? J'utilise JMP14, mais j'espère que la solution fonctionnera pour JMP12 et les versions ultérieures.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Define new column.
dt << New Column( "Mean for Each Age and Sex Group",
Formula( Col Mean( :height, :age, :sex ) )
);
// Define user input.
a = 2;
c1 = :height;
c2 = {:age, :sex};
// Define new column from user input.
dt << New Column( "Mean for Each Age and Sex Group 2",
Formula( Col Mean( a * c1, c2 ) )
);Re: Définir une formule de colonne à partir d'une entrée utilisateurJe ne suis pas tout à fait sûr de la formule que vous voulez dans la colonne nouvellement créée à partir de la saisie de l'utilisateur, mais jetez un coup d'oeil à ceci Article de JSL Cookbook , il donne des exemples de différentes méthodes de construction de votre nouvelle formule de colonne.
Re: Définir une formule de colonne à partir d'une entrée utilisateurMerci! Page très utile.
Re: Définir une formule de colonne à partir d'une entrée utilisateurAvec l'aide de @ih La contribution de, voici une solution pour toute personne intéressée ...
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Define user input.
a = 2;
c1 = Column( "height" );
c2 = {:age, :sex};
// Define new column from user input.
input = Concat( "As Column( \!"", c1 << Get Name, "\!" )" );
If( N Items( c2 ) > 0,
For( i = 1, i <= N Items( c2 ), i++,
input = Insert( input, Concat( ", ", "As Column( \!"", Char( c2[i] ), "\!" )" ) )
)
);
Eval( Parse( Eval Insert( "dt << New Column( \!"Mean for Each Age and Sex Group 2\!", Formula( ^a^ * Col Mean( ^input^ ) ) )" ) ) );