Come puoi calcolare il prodotto delle righe non vuote fino alla riga corrente?Sto cercando di scrivere una formula di colonna che calcolerà il prodotto di tutte le righe (non vuote) fino alla riga corrente.
Ho allegato una tabella dati di esempio (e screenshot).
Sto cercando di fare in modo che la colonna "Prodotto" sia il prodotto di tutte le righe non vuote della colonna "Valore". Mostro il risultato calcolato manualmente e i calcoli in "Risultato desiderato" e "Spiegazione del risultato desiderato" a destra.

Un paio di problemi relativi al set di dati che ho cercato di evidenziare nella tabella dati di esempio.
1. Il numero di righe per "Gruppo" varierà tra i gruppi.
2. Il “Gruppo” sarà sempre unito ed in ordine. Tutto il gruppo 1 sarà insieme. Il gruppo 1 verrà sempre prima del gruppo 2.
3. La colonna Valore avrà solo una riga non vuota per gruppo. Sarà sempre la prima fila di quel gruppo.
Penso che ciò potrebbe richiedere un tipo di formula "loop" o "per", ma ho un'esperienza limitata nella loro creazione.
Anche se non hai una soluzione, apprezzo qualsiasi pensiero o collegamento a guide o altre discussioni che ritieni possano portarmi a una soluzione.
Tentativi precedenti:
Pensavo che la risposta di txnelson a questa domanda ( https://community.jmp.com/t5/Discussions/How-to-multiply-all-elements-in-a-list/td-p/667633 ) potesse funzionare ma non è stato così Non sono riuscito a dare il risultato che sto cercando.
Grazie per il tuo tempo e il tuo aiuto!
Versione JMP: 17.2.0, Windows 10
Automazione e scriptingAnalisi e modellazione dei dati di basefinestreRi: Come puoi calcolare il prodotto delle righe non vuote fino alla riga corrente?Un'opzione che utilizza la consapevolezza che il valore viene sempre trovato dalla prima riga per ciascun gruppo
If(Row() == 1,
val = 1;
);
If(Row() == Col Min(Row(), :Group),
val = val * :Value;
,
.;
);

Modificare:
Ed ecco un altro controllo se :Value manca o meno
If(Row() == 1,
val = 1;
);
If(!IsMissing(:Value),
val = val * :Value;
,
.
);
Dovresti anche essere in grado di sostituire prima If con As Constant
As Constant(val = 1);
If(!IsMissing(:Value),
val = val * :Value;
,
.
);
Ri: Come puoi calcolare il prodotto delle righe non vuote fino alla riga corrente?Grazie Jarmo, ha funzionato perfettamente!