Ciclo For per creare colonne con formule di media mobileSono molto nuovo su jmp, sto cercando di passare dai fogli di calcolo ai grandi set di dati. Sto cercando di creare una serie di colonne per calcolare diverse medie mobili per una colonna di dati (xV-C). Ho la maggior parte del codice funzionante per creare le colonne, ma la formula per ogni colonna creata usa la variabile for-loop (j) invece del valore per il for-loop (10, 11, 12...) per ogni colonna. Penso di dover fare qualcosa con Eval e Parse, ma non riesco a capirlo. Ecco cosa ho finora:
per(j=10,j<=12,j++,
Nuova colonna("xF-C MA " || Char(j),Numerico,Formula(Col Media mobile( :"xV-C"n, 1, j-1 )))
);
Sono sicuro che per qualcuno è facile! Apprezzo l'aiuto!
Automazione e scriptingFinestreRe: Ciclo For per creare colonne con formule di media mobileBenvenuti nella comunità
Con una variabile specificata nella formula, "J" e la modifica del suo valore nel JSL, le colonne con la variabile cambieranno al variare del valore di "J". Per correggere questo, è necessario valutare il valore della variabile "J" mentre la formula è specificata in JMP.
Eval(EvalExpr()) forzerà la valutazione prima che JMP analizzi il codice
Prova questo
For( j = 10, j <= 12, j++,
Eval(
Eval Expr(
New Column( "xF-C MA x " || Char( j ),
Numeric,
Formula( Col Moving Average( :"xV-C"n, 1, Expr( j - 1 ) ) )
)
)
)
);
Re: Ciclo For per creare colonne con formule di media mobileMi piace usare Eval+EvalExpr ma c'è un'altra buona opzione Eval+Substitute che a volte può essere più facile da leggere (non sempre!). Nel tuo caso potrebbe apparire qualcosa del genere
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For(j = 10, j <= 12, j++,
Eval(Substitute(
Expr(
dt << New Column("height " || Char(j), Numeric, Formula(Col Moving Average(:height, 1, _lag_)))
),
Expr(_lag_), j - 1
));
);
Buono (vecchio) post correlato a questo argomento Inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute
Re: Ciclo For per creare colonne con formule di media mobilePerfetto! Grazie!