1 つの完全一致列と 1 つの最も近い一致列に基づいてテーブルを結合するにはどうすればよいですか?やあ、
JMPの「結合」機能を使用して2つのデータテーブルを結合したいと考えています。 時間と原子炉番号を考慮して参加したいと思います。 ただし、データ ファイルの 1 つの列「time」には小数点以下 8 桁があり、もう 1 つは小数点以下 0 があるため、これは機能しません。
(どのようにして) 最も近い一致点の時刻と原子炉番号を正確に一致させることができるでしょうか?
この問題に関する古い議論をすでにいくつか見つけました。 ただし、2 番目の列「リアクター番号」が一致しないため、これらの解決策は私にとっては機能しませんでした。

これは、結合したい 2 つのデータ テーブルのスクリーンショットです。 出力には、時間、反応器、反射率、乾燥重量の両方が含まれている必要があります。
前もって感謝します!
データのブレンディングとクリーンアップRe: 1 つの完全一致列と 1 つの最も近い一致列に基づいてテーブルを結合するにはどうすればよいですか?提供したサンプル データセットには間違った値が一致していませんか?
列乾燥重量 g/l を作成し、反射率データの名前を Time h から time h に変更します。

これに乾燥重量データを連結します。

リアクターと時間 h 列を選択し、それらで並べ替えます。
乾燥重量の欠損値を選択 -> 一致するセルを選択 -> 選択を反転
これで、テーブルを飛び回って最も近い値を見つけることができます。

この時点で、最も近い値を計算するための便利な数式やスクリプトを作成できます。たとえば、次のようなものを作成して、データをさらに削減できます。
Names Default To Here(1);
dt = Current Data Table();
r = dt << Get Selected Rows; //selecting of wanted rows could be done in script instead of datatable
r_min = r - 1;
r_max = r + 1;
dt << Subset(rows(Sort List(r||r_min||r_max)), Selected Columns(0));

この時点で、乾燥重量時間の値をコピーして新しい列に貼り付け、最も近い行を計算する式を作成できる可能性が高くなります。

これは、Join が使用された場合に最も近い行を結合することで返されるものです。

Update を使用すると、乱雑な列があまり作成されなくなります。

ツールの UI にはテーブルの選択に問題があるようです。ユーザーは正しいテーブルまたは選択されていることを確認する必要があります。そうしないと、ツールが自己結合を実行します。
Re: 1 つの完全一致列と 1 つの最も近い一致列に基づいてテーブルを結合するにはどうすればよいですか?お返事をありがとうございます! はい、小さな例をアップロードします。
一度手動で実行しようとしたことがありますが、グループ/リアクターが最大 24 個あり、多くの時点をスクロールする必要があるため、非常に時間がかかりました。 サブセットを作成しますか? それはどのように機能すると思いますか?
Re: 1 つの完全一致列と 1 つの最も近い一致列に基づいてテーブルを結合するにはどうすればよいですか?8 桁の時間を四捨五入する新しい列を作成し、それに結合してはどうでしょうか?
**編集** 気にしないでください。その理由はすぐにわかります。
次の手順を実行すると、最も近い時刻のみのサブセットを取得できます。
Names default to here(1);
dt = New Table( "Example",
New Column( "Time",
Set Values( [14.14, 14.28, 13.56, 13.11, 12.32, .] )
)
);
dt << New Column("Rounded Time",
Formula(Round(:Time, 0))
);
// we're just going to for the row that the value for time - rounded time = the min for that value
dt << New Column("Closest",
Formula(
Abs(:Time - :RoundedTime) == ColMin(Abs(:Time - :RoundedTime), :RoundedTime)
)
);
Re: 1 つの完全一致列と 1 つの最も近い一致列に基づいてテーブルを結合するにはどうすればよいですか?両方のデータテーブル (最良の場合は正しい結果を含むテーブル) に複数のリアクターがある小さなデータセットの例を提供していただけますか? グループの数があまり多くなく、自動化の必要がない場合は、これを手動で実行できる可能性があります。 fuzzy_merge アドインを使用し、多くのサブセットを使用してバイオリアクター グループを管理することもできます。
これを実行できるスクリプト (およびツール) もありますが、まだ完全にテストする時間がありません、そしてまだいくつかの小さなバグがあることは確かです。 最も近い行を結合ツールは次のことができる必要があります。
- 距離に基づいて参加する
- テーブルを後方、前方、最も近いものに結合します (オプションのタイブレーカー オプションを使用)
- グループ化を許可する
- 許容誤差の使用を許可する
- データテーブルをソートする必要はない
