移動平均式で列を作成するための For ループ私は JMP を初めて使用しており、スプレッドシートから大きなデータセットに移行しようとしています。データ列 (xV-C) のさまざまな移動平均を計算するために、一連の列を作成しようとしています。列を作成するためのコードの大部分は機能していますが、作成された各列の式では、各列の for ループの値 (10、11、12...) ではなく、for ループ変数 (j) を使用しています。Eval と Parse で何かする必要があると思いますが、わかりません。これまでのところ、次のようになっています。
j=10,j<=12,j++, の場合
新しい列("xF-C MA " || Char(j),Numeric,Formula(Col Moving Average( :"xV-C"n, 1, j-1 )))
);
これは誰かにとっては簡単なことだと思います! ご協力に感謝します!
自動化とスクリプトウィンドウズRe: 移動平均式を使用して列を作成するための For ループコミュニティへようこそ
数式に変数「J」が指定され、JSL でその値が変更されると、変数を含む列は「J」の値が変化するにつれて変化します。これを修正するには、数式が JMP に指定されているときに変数「J」の値を評価する必要があります。
Eval(EvalExpr())は、JMPがコードを解析する前に評価を強制します。
これを試してみてください
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: 移動平均式を使用して列を作成するための For ループ私は Eval+EvalExpr を使うのが好きですが、もう 1 つ良い選択肢として Eval+Substitute があります。これは読みやすくなることがあります (常にそうとは限りませんが)。あなたの場合は次のようになります。
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
));
);
このトピックに関連した良い(古い)投稿Eval Insert、Eval Expr、Parse、および Substitute を使用して、ある式を別の式に挿入します
Re: 移動平均式を使用して列を作成するための For ループ完璧です!ありがとうございます!