Crea formulaCiao a tutti,
come posso calcolare le colonne X_9 e X_10 con una formula?
Per X_9:
Mentre X_1 = X_1 -> X_7 (Row1) -X_8 = X_9
X_9 - X_8
Per X_10:
Mentre X_1 = X_1 -> X_10 (Row1) = X_9 - X_8
X_9 + X_8
Grazie mille per il tuo aiuto!
Ri: Crea formulaQuesto tipo di domanda è stata posta molte volte. Hai cercato prima nelle discussioni passate informazioni che potrebbero aiutarti a risolvere questo problema?
È improbabile che una formula usi il file Mentre() funzione. Probabilmente vuoi usare il Se() funzione. Vedi anche il Ritardo() funzione.
Le funzioni sono documentate. Perfavore guarda Aiuto> Documentazione JMP LIbrary> Uso di JMP . Ci sono capitoli dedicati a formule e funzioni. Vedi anche Aiuto> Indice degli script . Imposta questo browser per la visualizzazione funzioni (menu a discesa in alto a sinistra), quindi cerca Se e Ritardo .
Ri: Crea formulaMi dispiace, ma non riesco a interpretare la tua notazione su ciò che è necessario per X_0 e X_10. Puoi spiegarlo in termini scritti?Ri: Crea formulaCiao,
La ringrazio per la risposta.
Spero che tu possa capirlo ora.
I migliori saluti.
Finché le righe nella colonna X_1 non cambiano
-> deve essere calcolato nella colonna X_9 = X_7 meno X_8.
Finché le righe nella colonna X_1 non cambiano
-> la colonna X_8 deve essere aggiunta alla colonna X_10
Ri: Crea formulaEcco la mia soluzione: la formula X__9 è
If( Row() == 1, sumX__8 = 0 );
If( :X__1 != Lag( :X__1 ),
sumX__8 = 0
);
sumX__8 = sumX__8 + :X__8;
:X__7 - sumX__8;
La formula X__10 è
If( Row() == 1, theSum = 0 );
If( :X__1 != Lag( :X__1 ),
theSum = 0
);
theSum = theSum + :X__8;
theSum;
In allegato è una tabella di dati con le formule applicate
Ri: Crea formulaCiao,
è davvero meraviglioso !!
Grazie mille per quello!
Spero di iniziare presto a capire come usare la formula
... e posso farlo da solo.
Ti auguro una piacevole serata / pomeriggio (?).
Ri: Crea formulaCiao, txnelson,
capisco correttamente le tue formule?
La formula per X_9
se la riga = 1 quindi sommare X_8 = 0
Se X_1 lo è non uguale (?! = ritardo) a X_1 quindi sumX_8 = 0
altrimenti sumX_8 = sumX_8 + X_8
e X_7 - sumX_8
La formula per X_10
se Row = 1 allora theSum = 0
se X_1 lo fa non uguale (?! = Lag ) X_1
theSum = 0
altrimenti theSum = TheSum + X_8
Compila la somma
Questo è interpretato correttamente?
Un saluto solare e resta in salute!
Ri: Crea formula


Questo è sbagliato ....
Ciao sto provando a fare la formula da solo
Come posso ottenere il prossimo se sotto di esso?
Grazie per l'aiuto.
Ri: Crea formulaLa tua interpretazione di X__9 non è corretta. Vorrei provare a spiegare come funziona.
3 elementi devono essere capiti sulle formule in JMP che aiuteranno con l'interpretazione
- JMP esegue la formula per ogni riga nella tabella dei dati, a partire dalla riga 1. E la funzione Row () restituirà la riga su cui JMP è attualmente attivo
- Puoi creare tutte le variabili di memoria (ovvero sumX__8) che desideri in una formula e manterranno il loro valore fino a quando non vengono modificate nella formula, da riga a riga. Questa è una delle chiavi della formula. Questa variabile somma i valori di X__8 da riga a riga, fino a quando non viene osservato un nuovo valore X__1. Quando ciò accade, sumX__8 è riportato a 0.
- Il risultato dell'ultimo calcolo eseguito in una formula per una determinata riga è il valore che verrà visualizzato per la riga nella tabella dei dati.
Quindi l'interpretazione della formula per la colonna X__9 è:
Per la riga 1
Se Row () è uguale a 1, imposta la variabile di memoria sumX__8 uguale a 0. Questo è vero Row () è uguale a 1, quindi sumX__8 è inizializzato su un valore di 0. La variabile di memoria sumX__8 viene utilizzata per calcolare la somma cumulativa di X__8 all'interno del raggruppamento di X__1.
Se il valore di X__1 per la riga 1 non è uguale al precedente valore (Lag) di X__1, impostare il valore di sumX__8 su 0. Poiché non esiste un valore precedente di X__1, non verrà effettuato alcun calcolo. sumX__8 rimarrà al suo valore corrente, che è 0
La riga successiva ( sumX__8 = sumX__8 +: X__8; ) viene ora eseguito per impostare la somma cumulativa per questa riga. Lo fa prendendo il valore corrente di sumX__8, che è 0 e aggiunge ad esso il valore X__8 per la riga 0, che è 0 per il risultato di 0. Nota: questa riga di codice non è il calcolo "Altrimenti" per la precedente funzione IF (). Questa riga di codice viene eseguita per ogni riga.
La riga di codice successiva (: X__7 - sumX __ *) esegue il valore della riga di calcolo 1 di X__7, che è 20 e sottrae la somma cumulativa di X__7 (il valore sumX__8 è 0) e viene fornito con un valore di 20-0 o 20. Poiché questo è l'ultimo calcolo per la riga 1 nella formula, questo valore è quello che finisce come valore della riga 1 per X__9
Riga 2
Row () non è uguale a 1, quindi il codice risultato di sumX__8 = 0 non verrà eseguito
Il valore della riga 2 di X__1 è 1000 che è uguale al valore (Lag) precedente di X__1, quindi il codice risultato non verrà eseguito
sumX__8 viene calcolato per questa riga, risultante è il valore corrente di sumX__8 che è 0, aggiunto al valore della riga 2 di X__8 che è 0 per un risultato di 0
Il valore di righe per X__9 viene calcolato come valore di riga 2s di X__7, che è 20 e sottrae il valore corrente di sumX__8 che è 0 per un valore risultante di 20.
Questo processo continua da una riga all'altra. Alla riga 9, viene visualizzato il primo valore diverso da 0 di X__8, quindi il valore di sumX__8 diventa 0 + 1 per un valore di 1. La riga 10 ne aggiunge un'altra alla sumX__8, ecc.
La riga successiva successiva è la riga 20. Durante l'esecuzione della formula per questa riga, la funzione IF () "If (: X__1! = Lag (: X__1)" è vera. : X__1 è uguale a 1001 e il valore precedente (ritardo) di X__1 è 1000, quindi il codice risultante di sumX__8 viene impostato su 0, quindi la somma cumulativa ricomincerà.
La tua interpretazione è cambiata in:
La formula per X_9
se la riga = 1 quindi sommare X_8 = 0
Se X_1 lo è non uguale al valore precedente di X_1 quindi sumX_8 = 0
sumX_8 = sumX_8 + X_8
X__9 è calcolato per essere X_7 - sumX_8
La formula per X__10 è praticamente la stessa di X__9, quindi usando la tua interpretazione, con le mie modifiche lo è
La formula per X_10
se Row = 1 allora theSum = 0
se X_1 lo fa non uguale al valore precedente di X_1 theSum = 0
theSum = TheSum + X_8
X__10 viene impostato facendo riferimento al valore della variabile theSum
Ri: Crea formulaLe formule complesse sono piuttosto difficili da creare utilizzando il creatore della formula. Quindi la mia regola empirica è che se hai più linee di calcolo, uso l'editor di script all'interno di Creatore formula.
Se fai doppio clic sulla casella con la dicitura "nessuna formula"

Vedrai una casella di input che ti permetterà di digitare una singola riga .... o un paio di righe

Ma se fai clic sull'oggetto nell'angolo in alto a destra della casella

Verrà visualizzato l'Editor degli script, in cui è possibile inserire facilmente l'intero script
