Loc Sortedを使用してテーブル間で完全一致を検索しますか?顧客は、VLOOKUP(Excel)に似た列に数式を設定することに興味があります。 この関数の結果はテーブル結合を使用した場合と同じ出力になりますが、顧客は結合ではなく式を使用してそれを行う正当な理由があります。
例として、彼のベーステーブルは次のようになります。

2番目の参照テーブルは次のようになります。

この式を実表の「出力」列に割り当てることができます。
dtRefTable = Data Table( "RefTable");
KeyBracket = Loc Sorted(dtRefTable:Key << getvalues、:Key);
dtRefTable:SpecificInfo [KeyBracket];
数式を実行すると、ベーステーブルが次のように変更されます。

問題は、ベーステーブルで、行2のキーが2401であることです。 Refテーブルに2401に一致するものがないため、Loc Sortedは切り捨てて、Keyの次に低い値(この場合はKey = 2400)を選択し、出力に111を選択します。
顧客が望んでいるのは、そのセル(出力列、行2)が「欠落」であるか、条件ステートメントによって「一致が見つからない」と識別できるその他の値です。 そしてもちろん、「key = 2401でセルをMissingに設定する」と言うほど簡単ではありません。実際のデータには、一致と非一致の多くの可能性があるからです。
S o理想的なベーステーブルは次のようになります。

これをどのように達成しますか?このようなテーブル全体で機能する別の関数(Loc Sortedではなく)がありますか?
おかげで、
ジェリー
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?いいね!ブレイディ、そして答えてくれたすべての人に感謝します。 お客様に喜んでいただけると思います。
JSLは、利用可能なすべての機能に引き続き驚かされます。 「Try」機能についてはまったく知りませんでしたし、「As List」も使用していませんでした。 とてもクールで、とても感謝しています!
ジェリー
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?私はこれが好きです。短くてエレガント。
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?
別のオプションがあります。
dt = Data Table( "reftable" );
Try( dt:specificInfo[Loc( As List( dt:key << getvalues ), :Key )[1]], . );
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?これは、キー列の値が数値であり、テーブル参照変数を設定している限り機能します。例で使用した列参照は、列式では機能していないようです。
KeyBracket = Loc(Column(dtRefTable,"Key") << getvalues == :Key);
If(N Row(KeyBracket > 0,
Column(dtRefTable,"SpecificInfo")[KeyBracket[1]],
.
);
テーブル式内でこのようなコードについてどのように感じているかわかりません。ただし、ターゲットテーブルのすべてのキー値をループする手間が省けます。キー値が文字の場合、Locコマンドで「==」をコンマに置き換え、引数の順序を切り替えます。
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?ええ-私はおそらく式でこれを行うことができます... テーブルコントロールの問題がある場合、JMPテーブルクエリビルダーに関連するものがより良いルートになる可能性があります。次に、標準化されたワークフローをQBファイルとして保存し、更新機能を備えたテーブルを作成できます。QBの利点は、コードがすでにJMPによってフォーマットおよび構築されていることです。再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?結合(通常または仮想)は実際に機能します。私は当初、それらを顧客に提案しました。 ただし、結合の代わりに式を使用する必要がある内部ニーズ(複数の人が安全なデータファイルにアクセスする-私はすべての入出力を理解していない)があります。 ごめんなさい!
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?それも私が提案するものです。式があるテーブルを保存する前に、参照されているテーブルを閉じないでください。その場合、数式は削除されます!
再:テーブル全体で完全一致のためにLoc Sortedを使用しますか?仮想結合を試しましたか?
M