数値列の値を使用して、同じ列番号への参照を作成したい整数を含む列を生成し、同じ番号の列の値を参照するために使用したいと考えています。列9には、列10の数式で参照する列を示す番号が含まれています。以下に、動作しない点をいくつか示します。



自動化とスクリプトRe: 数値列の値を使用して同じ列番号への参照を作成したい赤い下線が引かれたコードの上にマウスを移動すると、どのエラー メッセージが表示されますか?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "Column 9",
Numeric,
Set Values( [1, 2, 3, 4, 5] )
);
New Column( "Column 10",
Expression,
Formula( Try( Column( :Column 9 ) ) )
)
エラーなし:


列を取得するのではなく、列に格納されている値を取得する場合は、 column() ではなく As column() を使用します。
堅牢な列参照
...または、 Column() に行インデックスを追加します。
列(col)[row()]または列(col)[]
New Column( "Column 10b",
Character,
Formula( Try( Char( Column( :Column 9 )[Row()] ) ) )
)

それ以外にも、
- 計算された値が列のモデリング タイプと一致していることを確認してください。
1列目から5列目には数字と文字が含まれています。そのため、 Char() を追加しました。
- 列(.)は失敗し、列の式は終了します。列9に不足しているインデックスがないか確認してください。
Re: 数値列の値を使用して、同じ列番号への参照を作成したいホギ
ありがとうございます。しかし、これらでは列 9 にすでにある値が返されるだけです。列 9 に列挙されている別の列の値を検索したいのですが、よろしいでしょうか?
Re: 数値列の値を使用して、同じ列番号への参照を作成したい両方のアプローチを組み合わせて、最初のステップで列を取得し、2 番目のステップで値を取得してみましょう。
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "column",
Expression,
Formula( Try( Column( Row() ), . ) ),
);
New Column( "value",
Character,
Formula( Try( Char( :column[Row()][Row()] ), "" ) ),
)
why :column[Row()][Row()]?
:カラムは列番号 9 です。
:column[row()]は、この列の特定の行のエントリです。例:列 ("sex")
:column[row()][row()]は、例えば列("sex")の特定の行のエントリです。

Re: 数値列の値を使用して、同じ列番号への参照を作成したいホギ
素晴らしい追加です!善行とかそういうのは関係ありません.............
ここで、列 9 に格納されている最大値を基準として、各列に対して反復的に操作する必要があります。この場合、i の値の通常の加算は自然には適用されません。
clear symbols();
lim = Col Max(Column(8));
For (i=1, i<=lim, i++,
New Column( "Column 10b",
Character,
Formula( Try( Char( Column( :Column 9 )[Row()] ) ) )
));
Re: 数値列の値を使用して、同じ列番号への参照を作成したい
@SpannerHeadは次のように書きました:
この場合、i の値の通常の加算は自然には適用されません。
非常によくある問題:
新しい列メッセージの外部で定義され、新しい列メッセージ内で使用される変数:
-> JMPにおける式処理:ヒントと落とし穴
解決策: 変数を検索し、保存された値を使用します。
For each ({i}, 1::5,
Eval(Eval Expr(New Column( "col_"||char(i),
Character,
Formula( Try( Char( Column( Expr(i) )[Row()] ) ) )
))));
より堅牢:
For each ({i}, 1::5,
Eval(Eval Expr(New Column( "col_"||char(i),
Character,
Formula( Try( Char( Expr(Name Expr(As Column( i )) )) ) )
))));
@jthiの投稿の 1 つで初めて見た日から、私は Name Expr(As Column(col)) に感心し、できる限りそれを使用するようになりました。
https://community.jmp.com/t5/Discussions/Using-numeric-objects-in-a-column-equation/mp/903966/highlight/true#M106273から学んだことで、このアプローチによって多くの落とし穴を回避できたことを本当に嬉しく思います。
列式では Column(col)とするか列(col)とするか? あまりにも脆弱です!