JMP Scripting - Come modificare il valore di una "cella"<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />CIAO,
Mi chiedo come scriverlo per modificare il valore di una "cella" che è il risultato di un calcolo nello script.
In particolare, voglio essere in grado di modificare il valore di una cella in "0" se il valore calcolato è negativo lasciando tutte le altre "celle" da sole.
Anche se deve essere in una nuova colonna, va bene. Ad esempio, se ho la mia colonna di valori calcolati e quella che mi interessa è negativa, crea una nuova colonna che dica semplicemente "0" per quella "cella".
Grazie in anticipo.
Re: JMP Scripting- Come modificare il valore di una "cella"una fodera....
dt[dt<< ottiene righe where(:ageval < 14)] = 0;
Re: JMP Scripting- Come modificare il valore di una "cella"Per questo scenario, puoi utilizzare la proprietà della colonna "Range Check". In questo modo la tabella contiene i metadati e non hai bisogno di un'altra tabella:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(2);
Column(dt, "age") << rangeCheck( !LT( 13 ) );
Column(dt, "weight") << rangeCheck( LT( 100 ) );Re: JMP Scripting- Come modificare il valore di una "cella"È necessario modificare la formula per verificare il valore che si desidera modificare, quindi utilizzare un'istruzione condizionale nella formula per modificarla nel valore desiderato.
// Sample formula
:A + :B;
If( isMissing(:A+:B) == 1, 0 );
Re: JMP Scripting- Come modificare il valore di una "cella"Ciao Jim,
Quale sarebbe la forma di questo script se avessi l'"altro" e la terza alternativa come definito nel comando IF?
Migliore,
K
Re: JMP Scripting- Come modificare il valore di una "cella"Ian,
Mi piace il modo della matrice, ma come fare se voglio pulire diverse colonne per le quali le condizioni di pulizia sono diverse.
per esempio in classe numerosa
età -> imposta tutte le celle con valore <13 come vuote
height -> imposta tutte le celle con valore> 100 come vuote
supponendo che io abbia una tabella di riferimento per tutte le condizioni di colonna.
Re: JMP Scripting- Come modificare il valore di una "cella"Puoi postare la formula?COME xnelson ha detto che puoi semplicemente fare la parte di controllo della formula.
Per postare la formula:
1. Apri il set di dati e fai clic sul segno + accanto alla colonna della formula.
2. Fare doppio clic all'interno della finestra della formula.Questo cambierà la finestra per mostrare il codice JSL per la formula
3. Copia il codice JSL e pubblicalo su questo forum.
La nuova formula sarà qualcosa del genere:
tmp = Mettere - originale - formula - Qui ;
Se ( tmp < 0 , 0 , tmp ) ;
Re: JMP Scripting- Come modificare il valore di una "cella"puoi certamente rendere il controllo condizionale parte della formula
Re: JMP Scripting- Come modificare il valore di una "cella"Avrebbe senso rendere il test parte della formula?
Se ( Incontro ( ... ) < 0 ,
0 ,
Incontro ( ... )
)
Re: JMP Scripting- Come modificare il valore di una "cella"Grazie a tutti.
Quello che sto cercando di fare è cambiare il valore di una cella di una colonna che contiene una formula.
La colonna "Età" di Big Class non proviene da una formula, quindi tutti questi suggerimenti funzionano per modificare il valore di una cella.
Ho una colonna, la chiamo "Test", che utilizza la formula di corrispondenza. C'è un modo per scriverlo per cambiare il valore di una cella in quella colonna a zero se la formula di corrispondenza lo calcola come negativo? Voglio essere in grado di forzare il valore a zero se è negativo.
Re: JMP Scripting- Come modificare il valore di una "cella"Farò questo un altro passo.Molte volte ho fatto cose simili che Ian ha mostrato.Estrazione dei dati dalla tabella dei dati e utilizzo degli operatori di matrice.Questo ha un vantaggio di prestazioni su grandi quantità di dati.Tuttavia quella che segue è una tecnica che ho usato molte, molte volte, perché è molto veloce e non richiede l'estrazione dalla tabella dei dati.
Nomi Predefinito A Qui( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Try( dt:Age[dt << get rows where( :Age < 14 )] = 0 );
La funzione "Try" protegge semplicemente dal caso in cui Get Rows Where potrebbe restituire una matrice vuota e l'assegnazione genererebbe un errore.
Re: JMP Scripting- Come modificare il valore di una "cella"E basandosi sulla risposta di Jim, è generalmente considerata una buona pratica evitare i loop, se possibile:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get the values of age into a vector
ageVals = dt:Age << getValues;
// Find the location of age values less than 14
ageValsLessThan14 = Loc(ageVals < 14);
// Set these values to zero
ageVals[ageValsLessThan14] = 0;
// Put the new values back into the column
dt:Age << setValues(ageVals);
Re: JMP Scripting- Come modificare il valore di una "cella"Rebecca,
Mi chiedo se ciò che stai chiedendo debba essere spiegato a un livello più elementare rispetto a come ha mostrato Justin.Il suo esempio ti dà una risposta, tuttavia, nel modo in cui hai descritto il tuo problema, posso speculare su scenari in cui i componenti della tua dichiarazione condizionale potrebbero provenire da fonti diverse dalla tabella di dati corrente.
Uno degli elementi di base in una tabella dati JMP è che ogni cella è indirizzabile direttamente.Utilizzando la tabella dei dati dalla risposta di Justin, è possibile accedere a qualsiasi cella semplicemente specificando il nome della colonna e il numero della riga.
:Age[1]
punta al valore della prima riga per la colonna Età.Un modo più corretto per farvi riferimento è utilizzare il puntatore della tabella dati (spazio dei nomi della tabella dati).Quindi, se il puntatore alla tabella dei dati come specificato nella risposta di Justin è "dt", allora
dt:Age[1]
è la forma più corretta.
Prendendo l'esempio di Justin, potremmo effettivamente modificare i valori in atto e non dover creare una nuova colonna.Il codice seguente lo farà
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For( I = 1, I <= N Rows( dt ), I++,
if(dt:Age < 14,
dt:Age = 0
);
);
Re: JMP Scripting- Come modificare il valore di una "cella"Ecco un esempio di come modificare in modo condizionale una cella durante la copia in una nuova colonna:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = dt << New Column( "New Column", Formula( If( :age < 14, 0, :age ) ) );
Nel tuo caso, cambieresti la condizione in modo che sia minore di zero anziché 14.