Problème avec les scripts JMP (fonction Multiplier)Salut,
J'ai du mal à utiliser la fonction de multiplication dans jmp, je veux évaluer les valeurs avant de les placer dans un tableau. J'ai utilisé le script de débogage et les deux variables s'évaluent correctement mais ne se multiplient pas ensemble. Quelqu'un peut-il aider?
fl = Files In Directory( cal_path, recursive );
fli = {};
for( y = 1, y<=nitems(fl), y++,
if(left(fl[y],1) == "~", remove from(fl, y));
insertinto(fli,left(substitute(substitute(fl[y],"-",""),"_",""),9));
);
grfactor1 = {};
adjgr1 = {};
agr1 = {};
For( i = 1, i <= N Items( fl ), i++,
currentfile = cal_path || fl[i];
dt = Open( currentfile );
Current Data Table( dt );
name_list = dt << get column names( string );
If( Contains( name_list, "Active Multi" ) == 0 ,
Insert Into( grfactor1, "" );
Insert Into( adjgr1, "" );
close(dt, nosave);
Continue()
);
grfa = :name( "Active Multi 2" )[8];
adjgra = :name( "Active Multi 2" )[20];
Insert Into( grfactor1, grfa );
Insert Into( adjgr1, adjgra );
Close( dt, nosave );
);
agr1=adjgr1;
Multiply to (agr1, grfactor1);
ct = New Table( "historical_data" );
ct << New Column( "GRF1", numeric, values( Eval( grfactor1 ) ) );
ct << New Column( "GRU1", numeric, values( Eval( adjgr1 ) ) );
ct << New Column( "GR1", numeric, formula( GRU1 * GRF1 ) );
ct << new column( "check 1", numeric, values(Eval ( agr1 )));Merci en avance.
Re : Problème avec les scripts JMP (fonction Multiplier)Parfait, merci à tous. Cela fonctionne maintenant comme prévu.
Re : Problème avec les scripts JMP (fonction Multiplier)Cela ressemble à des chaînes dans cet exemple, pas à des nombres. Si c'est également le cas pour vos données, vous devrez convertir en nombres car les chaînes ne se multiplieront pas correctement. La conversion peut probablement être effectuée efficacement dans votre boucle :
//...
grfa = Num(:name("Active Multi 2")[8]);
adjgra = Num(:name("Active Multi 2")[20]);
//...
Re : Problème avec les scripts JMP (fonction Multiplier)C'est exactement ce que j'essaie de faire et j'ai utilisé la fonction show (bonne idée) et ça m'a renvoyé ceci :
adjgr = {"2.763", .} ;
grfactor = {"0.291", .} ;
agr = {"2.763", .} ;
adjgr = {"2.763", .} ;
grfactor = {"0.291", .} ;
Je n'ai que 2 fichiers pour le moment sa lecture et 1 ne contient rien et l'autre ne contient que des nombres aléatoires.
Comme vous pouvez le voir, il n'évalue que l'adjgr et ne le multiplie pas par le grfactor.
Re : Problème avec les scripts JMP (fonction Multiplier)J'essaie de supprimer le calcul de colonne et de le calculer dans le script à la place. La formule dans le nouveau script de colonne fonctionne et est correctement évaluée, c'est le
Multiply to (agr1, grfactor1);
qui devrait me donner la même valeur mais ne semble évaluer la variable qu'à la valeur agr1.
Re : Problème avec les scripts JMP (fonction Multiplier)Je pense que votre code essaie de faire quelque chose comme ça; Je n'avais pas essayé une liste de valeurs auparavant:
a={1,2};
b={3,4};
show(a,b);
c=multiplyto(a,b);
show(a,b,c);
un = {1, 2} ; // entrée à multiplier par ()
b = {3, 4} ;
un = {3, 8} ; // ceci est mis à jour en multipliant par ()
b = {3, 4} ;
c = {3, 8} ; // ceci est retourné en multipliant par ()
Assurez-vous de consulter le journal JMP pour les messages d'erreur et utilisez la fonction show(a,b) pour écrire des valeurs dans le journal pour voir ce qui se passe.
Re : Problème avec les scripts JMP (fonction Multiplier)Essayez d'utiliser la portée ":" pour indiquer que GRU1 et GRF1 sont des noms de colonne. Si le tableau est volumineux, il peut également être utile d'insérer une commande Wait () pour permettre aux colonnes d'entrée d'être entièrement finalisées avant l'évaluation de la formule.
//...
Wait(0);
ct << New Column("GR1", numeric, formula(:GRU1 * :GRF1));
//...