通過標識符連接日期之間的兩組數據。大家好,第一次來,
我正在嘗試組合和匹配來自兩個不同來源的兩個不同的表/數據集,只有很少的唯一標識符......
流程示例:處理一個小部件(在本例中使用兩種不同的試劑),輸出表(下圖,每個事件一行)包含“操作開始日期時間”和“操作完成日期時間”。 小部件的唯一標識符是“SFC”和“Shop Order”。
輸出表 1

在“操作開始日期時間”和“操作完成日期時間”之間提交流程數據(下面,每個事件 24 行)...
輸出表 2

我試圖將提交數據(輸出表 2)與事件數據(輸出表 1)匹配,基本上是每個事件的結果。 雖然每個“SFC”(小部件)都連接到“車間訂單”,但它們有多個事件數據集;即 SN12345 == Shop Order 98765,並且可能有多個“DATE”提交(輸出表 2),但每個“DATE”提交都帶有一個唯一的“GROUP_ID”。
主要目標是將輸出表 2 的“名稱”和“值”與輸出表 1 中的“試劑類型”相匹配,然後我可以在其中可視化試劑的比較。
我希望我解釋得足夠好(清晰如泥),並希望這就是這個網站的運作方式!
提前致謝!
分析數據表回复:通過標識符連接日期之間的兩組數據。多麼不可思議的社區! 謝謝你!
回复:通過標識符連接日期之間的兩組數據。我不確定這是否正是您想要的。根據示例數據中的開始和完成時間,示例數據並未提供真正好的匹配。請在更完整的數據上運行以下代碼/我還附上了您提供的 2 個示例數據表。
Names Default To Here( 1 );
dt1 = Data Table( "Output 1" );
dt2 = Data Table( "Output 2" );
// Loop through the Output 1 data table and set a unique id,
// and assign the same unique id to the Output 2 data rows
// that fall within the start and completion times
dt1 << New Column( "The Row", formula( Row() ) );
// Turn values to static
dt1:The Row << delete formula;
// Add a new column to the Output 2 data table that will be
// filled in below
dt2 << New Column( "The Row" );
For( i = 2, i <= N Rows( dt1 ), i++,
foundRows = dt2 << get rows where(
dt2:SFC == dt1:SFC[i] & dt2:SHOP_ORDER == dt1:Shop Order[i] & dt1:Operation Start Date Time[i] <= dt2
:DATETIME & dt1:Operation Completion Date Time[i] >= dt2:DATETIME
);
If( N Rows( foundRows ) > 0,
dt2:The Row[foundRows] = dt1:The Row[i];
)
);
// Join the data
dt3 = dt1 << Join(
With( dt2 ),
By Matching Columns(
:SFC = :SFC,
:Shop Order = :SHOP_ORDER,
:The Row = :The Row
),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve main table order( 1 )
);
// Cleanup the data tables
// uncomment the 2 lines below to automate the cleanup
// dt1 << delete columns(:The Row );
// dt2 << delete columns(:The Row );
回复:通過標識符連接日期之間的兩組數據。您能否提供用於測試的示例數據集? 如果必須,您可以使用表菜單下的 JMPs 匿名化功能來匿名化數據。我認為您可以匿名化除時間、SFC 之外的所有內容,因為匹配需要這些