Come calcolare direttamente il numero di condizioni consecutive?Ad esempio, prendi "altezza" come esempio e conta il numero consecutivo di "altezza" nella riga maggiore dell'"altezza" nella riga precedente.
Ho aggiunto una colonna ausiliaria h per determinare se l'"altezza" della riga è maggiore dell'"altezza" della riga precedente, quindi ho contato l'"altezza" consecutiva della riga maggiore dell'"altezza" della riga precedente in l'altra colonna. Se l'"altezza" è inferiore all'"altezza" della riga precedente, è necessario ricalcolare.

Come è possibile eseguire questo calcolo in un solo passaggio?
Ho provato questo, ma non ha funzionato:
if(:height>Lag(:height,1),row()-Contains(:height[Index(1,Row())],:height<LAG></LAG>
- Grazie!
Ri: Come calcolare direttamente il numero di condizioni consecutive?Ciao a tutti,
Mi ci è voluto un po', ma alla fine ho capito come aggiungere un valore alla riga precedente se la condizione era vera.
Quindi voglio condividere questo con te.Lo sto usando per etichettare i valori sequenziali all'interno dei gruppi.
Grazie a tutti.
Saluti!
If( Riga() == 1,
.,
If( :master == Lag( :master ),
If( :roll - Lag( :roll ) == 1,
:seq. lancia v3[Row() - 1] = 1,
.
)
)
)
Ri: Come calcolare direttamente il numero di condizioni consecutive?Ciao John,
Vedo l'errore ma questo non fornisce il calcolo e i controlli che richiedo.Il mio ultimo post mostra una nuova tabella di dati e una formula che è vicina.
Grazie
Onjai
Ri: Come calcolare direttamente il numero di condizioni consecutive?Sembra che il secondo If avesse un singolo = per l'assegnazione invece di un == per il test di equivalenza.
If( Row() == 1,
hCounter = 0,
If(
Lag( :name ) == :name,
If( :age > Lag( :age, 1 ),
Empty()
),
hCounter++, hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Ri: Come calcolare direttamente il numero di condizioni consecutive?CIAO,
Allego una parte del mio set di dati effettivo.Sto monitorando il numero di :roll sequenziali di :master.La formula è vicina, ma ne ho ancora bisogno per impostare il valore della prima occorrenza del tiro sequenziale se la differenza è 1.
If( :master == Lag( :master ),
If( Dif( :roll, 1 ) == 1,
Dif( :roll, 1 ),
.
),
.
)
Ad esempio, devo impostare il valore di :sequential roll su 1 per le righe 8 e 11 perché la differenza = 1

Qualsiasi aiuto sarebbe apprezzato.
Ri: Come calcolare direttamente il numero di condizioni consecutive?Ciao Jim,
Nessun problema.Ho chiamato la colonna per mostrare quello che stavo cercando come risultato finale della formula.
Guardando la colonna "desiderata da: nome" per Carol.
Le misurazioni dell'altezza sono state effettuate per 3 anni consecutivi (età 14, 15, 16).Ma la formula mostra 4.
La differenza di età, riga per riga, dovrebbe essere 1. Se è qualcosa <>1 allora dovrebbe essere vuoto.
Ho bisogno che il ritardo aumenti di 1 fino a quando il valore è <>1. Il che dovrebbe segnalare se è stato perso un anno di misurazione dell'altezza.

Ri: Come calcolare direttamente il numero di condizioni consecutive?Non capisco la regola per la colonna "desiderato da: nome".Hai un valore mancante alla fine delle righe per Alice, ma 2 righe con valori mancanti per Carol e Chris, e poi di nuovo solo 1 riga di valori mancanti per Clay.Non capisco
Ri: Come calcolare direttamente il numero di condizioni consecutive?CIAO,
Trovato l'errore, ma la formula continua a non calcolare la colonna 10 come desiderato.
L'altezza di Alice è stata misurata per 5 anni consecutivi.Ho bisogno di una colonna per mostrare quali righe sono consecutive.Clay ha avuto solo 2 anni consecutivi di misurazione dell'altezza.Carol aveva 3 anni consecutivi di misurazioni dell'altezza, ma la colonna 10 mostra 4.

Formula nella colonna 10:
If( Row() == 1,
hCounter = 0,
If( Lag( :name ) == :name,
If( :age > Lag( :age, 1 ),
hCounter
++),
hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Ri: Come calcolare direttamente il numero di condizioni consecutive?CIAO ,
Non sono del tutto sicuro di cosa sto facendo di sbagliato, ma l'istruzione If sta generando questo errore.

per questo:
If( Row() == 1,
hCounter = 0,
If(
Lag( :name ) = :name,
If( :age > Lag( :age, 1 ),
Empty()
),
hCounter++, hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Ri: Come calcolare direttamente il numero di condizioni consecutive?Basta aggiungere un'istruzione IF() nella formula che verifica se Lag(:Name) != :Name e, in caso contrario, riportare il contatore al punto di partenza.
Ri: Come calcolare direttamente il numero di condizioni consecutive?CIAO,
Ho una sfida simile.Tuttavia, ho bisogno di calcolare il numero di valori sequenziali (incrementati di 1) in una colonna.Allego l'esempio BigClass per illustrare.

Ho usato la tua formula per calcolare la colonna: h in base a: età, ma desidero una formula che inizi al primo valore di una sequenza e raggruppata per: nome.
Questo può essere ottenuto con una formula?
Saluti,
Onjai
Ri: Come calcolare direttamente il numero di condizioni consecutive?Il looping è una buona idea qui!
Grazie Jim!Ri: Come calcolare direttamente il numero di condizioni consecutive?Il problema ha una soluzione abbastanza semplice:
If( Row() == 1,
hCounter = 0,
If( :height > Lag( :height, 1 ),
hCounter++,
hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Questa versione produrrà valori mancanti quando ci sono 0 ritardi che soddisfano la condizione, proprio come la tua soluzione a 2 colonne.Se vuoi che il valore risultante sia uno zero e non un valore mancante, usa semplicemente:
If( Row() == 1,
hCounter = 0,
If( :height > Lag( :height, 1 ),
hCounter++,
hCounter = 0
)
);
hCounter;
Ecco un confronto completo dei 2 metodi
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "h",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Row() == 1, 0, :height > Lag( :height, 1 ) ) )
);
dt << New Column( "Two Columns Used",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :h == 1, Row() - Contains( :h[Index( 1, Row() )], 0, -1 ) ) )
);
dt << New Column( "All in one",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1,
hCounter = 0,
If( :height > Lag( :height, 1 ),
hCounter++,
hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
)
);