拝啓、
結合する必要があるテーブルが 2 つあります
2 つのリクエスト:
要望1)
表 1 には 1 日に複数のエントリがあります

表 2 には 1 日あたり 1 つのエントリがあります

「パラメータセット名とタイムスタンプ」に一致するテーブルを結合したいと考えています
このようなテーブルを作成します。それ、どうやったら出来るの?

要望2)
最初の 2 つのテーブルを考えると、以下に示すように、指定された日ごとにパラメータ X の最後の値のみを取得するには、どうすればそれらを結合できますか?

何かご意見やご提案はありますか?
ありがとう、ティモシー
お持ちの JMP のバージョンはどれですか? JMP17 を使用している場合は、テーブルを開いて [テーブルの結合] メニューに移動し、さまざまなオプションを試してみるのが最も簡単です。 リクエスト 1 は非常に単純な結合である必要があり、リクエスト 2 については、結合を実行する前に概要テーブルを作成する必要がある場合があります。
また、テーブルの例 (匿名化された作品またはモックアップ作品) を提供していただければ、より正確な指示を提供できます。
JMP16を持っています。投稿に模擬テーブルを載せました。見えますか?
JMP16 を使用している場合は、プレビュー テーブルにアクセスできませんが、「ダイアログを開いたままにする」オプションを有効にできるため、何か問題が発生してもダイアログを開いたままにすることができます。
画像は表示されますが、JMP で開くことができないか、データを JMP に取り込むことができないため、実際にはテーブルではありません。 これらを JMP テーブルとして追加できれば、はるかに簡単になります。
オプション 2 には、汚いハックがあります。
結合では常に最初に一致するエントリが取得されます。
そこでオプションで

- もし、あんたが逆行するテーブルの順序 (降順でソート)の場合、「最後」 - (現在: 最初) の値が残ります。
そのため、空いているテーブルは少なくなりますが、私が約束したことが本当に本当だとすると、奇妙な気分になります:)
dt= new table("test", add rows(8),New Column( "Column 1",
set values([1 1 1 1 1 2 2 2])
)
);
dt << New Column( "Rank1", set each value( Col Rank( 1,:Column 1 ) ));
dt2 = dt << Subset( All rows, Selected columns only( 0 ) );
dt2: Rank1 << set name("Rank2");
dt << Sort(By( :Rank1 ),Replace Table,Order( Descending, Descending ));
dt2 << Sort(By( :Rank2 ),Replace Table,Order( Descending, Descending ));
dt << Join(
With( dt2 ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :Column 1 = :Column 1 ),
Drop multiples( 1, 1 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 0 )
);
返信いただきありがとうございます。仮想列の作成については少しわかりにくいです。詳しく教えていただけますか?
本当にありがとう
仮想列の作成 ~ 列の変換:
リスト内の列の 1 つを右クリックし、行を選択します。

サポートするビジュアルをいくつか紹介します@jthiそして@ホギ提案
問題 1
Tables=>Join テーブル 2 をテーブル 1 に結合する

問題 2
Tables=>Sort 仮想列を作成し、Row と名付けます。列の式は Row() です。

それから
Tables=>Join テーブル 1 をテーブル 2 に結合

2 つの問題を実行する JSL は次のとおりです。
names default to here(1);
dt1 = New Table( "Table 1",
Add Rows( 6 ),
New Column( "Parameter Set Name",
Character,
Set Values(
{"27109N5", "27109N5", "27109N5", "27109N5", "27109N5", "27109N5"}
)
),
New Column( "Timestamp",
Format( "yyyy-mm-dd", 12 ),
Input Format( "yyyy-mm-dd" ),
Set Values(
[3600115200, 3600115200, 3600201600, 3600201600, 3600201600, 3600201600]
)
),
New Column( "Parameter X",
Set Values( [2.32, 1.21, 1.45, 1.45, 7.89, 2.04] )
)
);
dt2 = New Table( "Table 2",
Add Rows( 2 ),
New Column( "Parameter Set Name",
Character,
Set Values( {"27109N5", "27109N5"} )
),
New Column( "Timestamp",
Format( "yyyy-mm-dd", 12 ),
Input Format( "yyyy-mm-dd" ),
Set Values( [3600115200, 3600201600] )
),
New Column( "Parameter Y",
Format( "Best", 12 ),
Set Values( [21, 22] )
)
);
// Join data tables
// → Data Table( "One to Many" )
Data Table( "Table 1" ) << Join(
With( Data Table( "Table 2" ) ),
Merge Same Name Columns,
By Matching Columns(
:Parameter Set Name = :Parameter Set Name, :Timestamp = :Timestamp
),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "One to Many" )
);
// Create the Many to One table
// Sort data table
Data Table( "Table 1" ) << Sort(
By(
:Parameter Set Name,
:Timestamp,
Transform Column( "Row", Formula( Row() ) )
),
Replace Table,
Order( Ascending, Ascending, Descending )
);
// Join Table 1 to Table 2
// Join data tables
// → Data Table( "Many to One" )
Data Table( "Table 2" ) << Join(
With( Data Table( "Table 1" ) ),
Merge Same Name Columns,
By Matching Columns(
:Parameter Set Name = :Parameter Set Name, :Timestamp = :Timestamp
),
Drop multiples( 1, 1 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Many to One" )
);