通过标识符连接日期之间的两组数据。大家好,第一次来,
我正在尝试组合和匹配来自两个不同来源的两个不同的表/数据集,只有很少的唯一标识符......
流程示例:处理一个小部件(在本例中使用两种不同的试剂),输出表(下图,每个事件一行)包含“操作开始日期时间”和“操作完成日期时间”。 小部件的唯一标识符是“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 之外的所有内容,因为匹配需要这些