Scripting For loop para multiplicar valores a través de la filaHola,
Soy bastante nuevo en las secuencias de comandos en JMP y he buscado soluciones en muchos foros de jmp, pero no he tenido éxito en la modificación de las soluciones para mi problema particular.
Tengo un script que produce una tabla de un número desconocido de columnas y quiero multiplicar cada valor en la fila (solo hay una fila en la tabla generada) a través de las columnas producidas (columna 1 * columna 2 * columna 3 * etc.). Simplifiqué la tabla para el ejemplo, la tabla real podría tener muchas más columnas.
Mi bucle multiplica cada fila por la siguiente pero no me da la respuesta final de todas las filas multiplicadas entre sí. También solo quiero que el producto final de todos los valores se multiplique y no necesito el producto de cada valor incremental. Cualquier ayuda es muy apreciada.
New Table( "tsp",
Add Rows( 1 ),
New Column( "Row 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.975] )
),
New Column( "Row 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.985] )
),
New Column( "Row 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.983] )
),
New Column( "Row 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.839] )
),
);
Ncol = N col(tsp);
For( i = 1, i <= Ncol, i++,
For( j = i + 1, j <= Ncol, j++,
RTP = Eval( Column( i ) << Get Name ) || " * " || Eval( Column( i+=1 ) << Get Name );
New Column( RTP, Numeric , seteachvalue( Column( i )[] * Column( i+=1 )[]) );
)
);
Ingeniería de Calidad y ProcesosRe: Scripting For bucle para multiplicar valores a través de la filanvm encontré el error con los corchetes al final que contenían un 1 cuando debería haber estado vacío, mi código debería haber sido
tsp << New Column("RTP", numeric, continuous, Format(Percent, 1));
for each row(:RTP= Product( i = 2, N Col( tsp), Column( tsp, i )[] ))Re: Scripting For bucle para multiplicar valores a través de la filaTraté de poner esto en For Each Row para situaciones en las que tendría varias filas para iterar con esta fórmula, pero parece que no funciona y no estoy seguro de cuál es mi error. Obtengo el valor correcto. en "RTP" para la primera fila "A" (86.9%) y luego todas las demás filas muestran el mismo valor (75.5%) cuando todas deberían ser diferentes...
New Table( "tsp",
Add Rows( 5 ),
New Column( "Site",
Character,
"Nominal",
Set Selected,
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Row 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.974, 0.872, 0.927,
0.974, 0.9033]
)
),
New Column( "Row 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.968, 0.902, 0.931, .,
0.962]
)
),
New Column( "Row 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.944, 0.968, 0.987, ., .]
)
),
New Column( "Row 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.9847, 0.9471, ., ., .] )
),
New Column( "Row 5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.990, 0.994, ., ., .] )
)
);tsp << New Column("RTP", numeric, continuous, Format(Percent, 1));
for each row(:RTP= Product( i = 2, N Col( tsp), Column( tsp, i )[1] ));
Re: Scripting For bucle para multiplicar valores a través de la filaTodo lo que necesita después de New Table() es:
Product( i = 1, N Col( dt ), Column( dt, i )[1] );
Re: Scripting For bucle para multiplicar valores a través de la fila¡Usted, señor, es absolutamente maravilloso! muchas gracias funciono perfecto! Definitivamente estaba complicando las cosas jaja. eres tan útil!
Re: Scripting For bucle para multiplicar valores a través de la filaEstás trabajando demasiado.A continuación se muestra lo que creo que desea
names default to here( 1 );
dt = New Table( "tsp",
Add Rows( 1 ),
New Column( "Row 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.975] )
),
New Column( "Row 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.985] )
),
New Column( "Row 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.983] )
),
New Column( "Row 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [0.839] )
),
);
Ncol = N Col( dt ); // or NCol = N Col( data table("tsp"));
value = 1;
For( i = 1, i <= Ncol, i++,
value = Column( dt, i )[1] * value
);
Show( value );