JSL per convertire una formula nei suoi risultatiCiao,
Ho il seguente codice jsl
dt << New Column( "I (%)", (:Mean * 100) );
che prende una colonna (Media), la moltiplica per 100 e crea una nuova colonna chiamata I(%) con la formula.
Non voglio la formula ma solo il risultato del calcolo nella nuova colonna. Come posso fare questo?
Grazie molto.
Automazione e scriptingRicerche sui consumatori e sul mercatoCondivisione e comunicazione dei risultatiRe: JSL per convertire una formula nei suoi risultatiGrazie molto.Re: JSL per convertire una formula nei suoi risultatiGrazie! Molto chiaro.Re: JSL per convertire una formula nei suoi risultatiGrazie mille, molto utile.Re: JSL per convertire una formula nei suoi risultatiQuesto forse va un po' fuori tema e posso creare un post diverso per discuterne ulteriormente...
Anche se la documentazione è ciò che serve per Imposta ogni valore (la documentazione di JMP non è sempre esattamente puntuale...) Penso che sia il modo più semplice per gestire casi come questo. Puoi utilizzare facilmente "formule" complicate con Imposta ogni valore senza preoccuparti di rimuovere le formule in seguito. Con Values() i calcoli potrebbero diventare un po' più difficili da eseguire, vedere il mio esempio (non sono assolutamente esperto con le matrici JSL, quindi molto probabilmente esiste un modo più semplice per fare ciò che ho fatto nel mio esempio).
Esempio con formule, imposta ciascun valore e valori:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//With formulas
newCol = dt << New Column("Formula_simple", Numeric, Continuous, Formula(:height*:weight));
newCol << Delete Formula;
newCol = dt << New Column("Formula_ColMin", Numeric, Continuous, Formula(:height*ColMin(:weight, :sex)));
newCol << Delete Formula;
//With Set Each Value
newCol = dt << New Column("SetEach_simple", Numeric, Continuous, Set Each Value(:height*:weight));
newCol = dt << New Column("SetEach_ColMin", Numeric, Continuous, Set Each Value(:height * ColMin(:weight, :sex)));
//With Values
newCol = dt << New Column("Values_simple", Numeric, Continuous, Values((:height << get values) :*</img> (:weight<< get values)));
newCol = dt << New Column("Values_ColMin", Numeric, Continuous, Values(
Summarize(exg = By(:sex), exm = Min(:weight)); //get min values by group
m_val = J(N Rows(dt),1,1);//matrix for values
height_vec = :height << get values;
For(i = 1, i <= N Items(exg), i++, //loop to "fill" matrix for values
tempRows = Loc(:sex << get as matrix, exg[i]);
m_val[tempRows] = height_vec[tempRows] * exm[i];
);
m_val;
));Cosa fa Set Each Value dietro le quinte perché sembra funzionare perfettamente? La documentazione dovrebbe forse essere aggiornata per includere questo comportamento o creare una nuova funzione per farlo? Potrebbero rompere molti script che le persone hanno se il comportamento Imposta ogni valore venisse modificato.
Re: JSL per convertire una formula nei suoi risultatiQuesto comportamento è lo scopo previsto del messaggio << Imposta ogni valore così come è documentato.
Re: JSL per convertire una formula nei suoi risultatiPiù fresco! Avevo supposto che ogni valore dovesse essere impostato sullo stesso valore.
Re: JSL per convertire una formula nei suoi risultatiEcco un semplice esempio che utilizza Imposta ogni valore
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dt << new column("times100", numeric, continuous, set each value(:height*100));

Re: JSL per convertire una formula nei suoi risultatiQuel messaggio non è utile in questo caso. Viene utilizzato per impostare ogni riga nella colonna di destinazione sullo stesso valore costante.

Re: JSL per convertire una formula nei suoi risultatiFreddo!
Re: JSL per convertire una formula nei suoi risultatiNon hai affatto bisogno di una formula. Raccomando di non utilizzare formule di colonna durante lo scripting a meno che non si desideri che i valori cambino dinamicamente al termine dello script. Quindi il tuo caso potrebbe essere risolto in questo modo:
dt << New Column( "I (%)", Numeric, Continuous, Values( (:Mean << Get Values) * 100) );
Re: JSL per convertire una formula nei suoi risultatiProva a utilizzare <Re: JSL per convertire una formula nei suoi risultati
L'attesa(3) serve solo per poterlo guardare; non è richiesto dopo <
Puoi anche utilizzare l'editor di formule per cancellare la formula per ottenere lo stesso effetto.
Re: JSL per convertire una formula nei suoi risultatiNamesDefaultToHere(1);
// Sample table
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Add a formula column
dt << NewColumn("BMI", Numeric, Continuous, Formula(:weight/(:height^2)));
// Make sure the formula is run
dt << runFormulas;
// Wait a little, then remove the formula
Wait(3);
Column(dt, "BMI") << deleteFormula;