Problema con scripts JMP (función Multiplicar)Hola,
Tengo problemas para usar la función de multiplicar en jmp, quiero evaluar los valores antes de colocarlos en una tabla. He utilizado el script de depuración y las dos variables se están evaluando correctamente pero no se multiplican juntas. ¿Alguien puede ayudar?
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 )));Gracias de antemano.
Re: Problema con scripts JMP (función Multiplicar)Perfecto, gracias a todos. Ahora está funcionando como se esperaba.
Re: Problema con scripts JMP (función Multiplicar)Parece que las cadenas en este ejemplo, no números. Si ese es el caso también para sus datos, deberá convertirlos en números, ya que las cadenas no se multiplicarán correctamente. La conversión probablemente se puede hacer de manera eficiente en su bucle:
//...
grfa = Num(:name("Active Multi 2")[8]);
adjgra = Num(:name("Active Multi 2")[20]);
//...
Re: Problema con scripts JMP (función Multiplicar)Eso es exactamente lo que estoy tratando de hacer y he usado la función show (gran idea) y ha devuelto esto:
adjgr = {"2.763",.};
grfactor = {"0.291",.};
agr = {"2.763",.};
adjgr = {"2.763",.};
grfactor = {"0.291",.};
Solo tengo 2 archivos en el momento de su lectura y 1 no contiene nada y el otro solo contiene números aleatorios.
Como puede ver, solo se evalúa al adjgr y no se multiplica por el grfactor.
Re: Problema con scripts JMP (función Multiplicar)Estoy tratando de eliminar el cálculo de la columna y calcularlo en las secuencias de comandos en su lugar. La fórmula en el nuevo script de columna funciona y está evaluando correctamente su
Multiply to (agr1, grfactor1);
lo que debería darme el mismo valor pero solo parece evaluar la variable al valor agr1.
Re: Problema con scripts JMP (función Multiplicar)Creo que tu código está tratando de hacer algo como esto; No había probado una lista de valores antes:
a={1,2};
b={3,4};
show(a,b);
c=multiplyto(a,b);
show(a,b,c);
a = {1, 2}; // entrada para multiplicar a ()
b = {3, 4};
a = {3, 8}; // esto se actualiza multiplicando a ()
b = {3, 4};
c = {3, 8}; // esto se devuelve multiplicando a ()
Asegúrese de revisar los mensajes de error en el registro JMP y use la función show (a, b) para escribir algunos valores en el registro para ver qué está sucediendo.
Re: Problema con scripts JMP (función Multiplicar)Intente usar el ámbito ":" para indicar que GRU1 y GRF1 son nombres de columna. Si la tabla es grande, también puede ayudar a insertar un comando Esperar () para permitir que las columnas de entrada se terminen por completo antes de evaluar la fórmula.
//...
Wait(0);
ct << New Column("GR1", numeric, formula(:GRU1 * :GRF1));
//...