Scripting For ciclo per moltiplicare i valori tra le righeCIAO,
Sono abbastanza nuovo nello scripting in JMP e ho cercato soluzioni in molti forum jmp, ma non sono riuscito a modificare le soluzioni per il mio particolare problema.
Ho uno script che produce una tabella di un numero sconosciuto di colonne e desidero moltiplicare ciascun valore nella riga (c'è solo una riga nella tabella generata) tra le colonne prodotte (colonna 1 * colonna 2 * colonna 3 * ecc.). Ho semplificato la tabella per l'esempio, la tabella attuale potrebbe avere molte più colonne.
Il mio ciclo moltiplica ogni riga per quella successiva ma non mi dà la risposta finale di tutte le righe moltiplicate l'una per l'altra. Voglio anche solo moltiplicare il prodotto finale di tutti i valori insieme e non ho bisogno del prodotto di ogni valore incrementale. Qualsiasi aiuto è molto apprezzato.
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 )[]) );
)
);
Qualità e ingegneria di processoRe: Scripting For loop per moltiplicare i valori tra le righenvm ho trovato l'errore con le parentesi alla fine contenenti un 1 quando avrebbe dovuto essere vuoto, il mio codice avrebbe dovuto essere
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 loop per moltiplicare i valori tra le righeHo provato a inserirlo in For Each Row per situazioni in cui avrei più righe da scorrere con questa formula ma non sembra funzionare e non sono sicuro di quale sia il mio errore ... ottengo il valore corretto in "RTP" per la prima riga "A" (86,9%) e poi tutte le altre righe mostrano lo stesso valore (75,5%) quando dovrebbero essere tutte diverse...
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 loop per moltiplicare i valori tra le righeTutto ciò di cui hai bisogno dopo New Table() è:
Product( i = 1, N Col( dt ), Column( dt, i )[1] );
Re: Scripting For loop per moltiplicare i valori tra le righeSignore, siete assolutamente meravigliosi! grazie mille funziona perfettamente! Stavo decisamente complicando le cose ahah. sei così utile!
Re: Scripting For loop per moltiplicare i valori tra le righeStai lavorando troppo.Di seguito è quello che credo tu voglia
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 );