Come contare le righe in base al valore in un'altra colonnaUtilizzo JMP 12.0 da qualche tempo e lo trovo fantastico. Tuttavia, c'è un problema per il quale apprezzerei un aiuto poiché sembra che io sia l'unica persona che utilizza JMP mentre gli altri utilizzano SPSS.
Vorrei avere alcune informazioni in merito a quanto segue:
C1 C2
Titolo Ordine calcolato
r1 chirurgo 1
r2 chirurgo 2
r3 chirurgo 3
r4 residente 1
r5 residente 2
r6 stagista 1
r7 stagista 2
eccetera.
Un mio amico e collega usa SPSS e in quel programma ha scritto la seguente formula che calcola il valore in C2 nel suo SPSS.
Esegui se Titolo>LAG(Titolo).
Ordine di calcolo=1.
Finisci se.
Esegui se Titolo=LAG(Titolo).
Ordine di calcolo=LAG(Ordine)+1.
Finisci se.
Eseguire.
Come posso scrivere una formula corrispondente in JMP?
Molto grato se qualcuno potesse spiegare come.
LarsBirger
Re: Come posso fare in modo che JMP calcoli un valore che riflette l'ordine di un parametro.Grazie per le risposte. Darò un'occhiata a questo. Un collega mi ha aiutato con il suo programma statistico (SPSS), ma lo esaminerò sicuramente poiché utilizzo continuamente JMP per le mie ricerche.
Cordiali saluti
Lars
Re: Come posso fare in modo che JMP calcoli un valore che riflette l'ordine di un parametro.Se utilizzi JMP 13, la funzione Col Rank() supporta il tie-break in base al numero di riga, in modo da ottenere l'effetto che stai cercando.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Rank within age",
Formula( Col Rank( 1, :age, <<TIE></TIE>
Il primo argomento è il valore da classificare, che di solito è un'altra colonna, ma in questo caso il valore classificato non ha importanza, quindi ho utilizzato la costante 1.
Re: Come posso fare in modo che JMP calcoli un valore che riflette l'ordine di un parametro.Ciao, Lars!
Ecco uno script che penso faccia quello che stai chiedendo sul set di dati Big Class nei dati di esempio:
Names Default To Here( 1 );
BC_dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
BCSorted_dt = BC_dt << Sort( By( :age, :sex, :height, :weight ), output table name("Big Class Sorted"));
BCSorted_dt << New Column( "Computed Order",
Numeric,
Ordinal,
Formula( If(row()==1 | :age!=Lag(:age, 1), 1, Lag(:Computed Order, 1)+1) ),
EvalFormula);
Se tutto ciò di cui hai bisogno è la formula, puoi copiare l'argomento Formula() nello script e incollarlo nell'editor delle formule... ricordati solo di ordinare prima i dati in modo appropriato.
Buona fortuna!