我有一张数据表,描述了一系列半导体批次的工具历史记录。在某些情况下,这些批次可以拆分,并在同一处理步骤中跨不同的工具运行。在这种情况下,我想创建一个将每个工具连接在一起的列,以表明涉及了 > 1 个工具。在很多人的帮助下,我已经能够识别使用 > 1 个工具的批次、步骤和子步骤。我可以转置数据以获取列中指定的工具,但这仍然很笨拙。我能否以某种方式将其连接起来以列出唯一的工具。我也查看了拆分,但并未反映所有选项。

这是一个可用于创建所需结果列的公式
As Constant( dt = Current Data Table() );
Concat Items( Associative Array( dt[Row(), 0] ) << get keys, "/" );
特克斯尼尔森
这是一个巨大的进步。有没有简单的方法可以避开方程中的前 4 列?第 5 列及以后的列包含相关数据。
这是一种方法
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" );
强烈建议您花时间前往
帮助=>JMP 在线帮助
并阅读“脚本指南”部分以熟悉 JSL 和脚本
像我一样,这很丑陋,但它有效。txnelson 脚本生成的列可能在文本前面有不必要的正斜杠实例。我删除了列中的公式,并使用正则表达式替换为不同的列以消除任何前面的 /。
New Column("Tools2", Character, "Nominal", Formula(As Constant(
dt = Current Data Table();
start = 6;
stop = N Cols( dt );
);
Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" );));
Wait(1);
Data Table( "Transpose of Tool_History" ):Tools2 << Delete Formula;
colList = Data Table( "Transpose of Tool_History" ) << Get Column Names( String );
For( i = 1, i <= N Cols( Data Table( "Transpose of Tool_History" ) ), i++,
If( Contains( colList[i], "Row" ), /* select only columns with Row
in the name */
Column( colList[i] ) << Set Selected( 1 );
)
);
Data Table( "Transpose of Tool_History" ) << Delete Columns();
New Column("Tools", Character, "Nominal", Formula(Regex(:Tools2, "\w.*")));
Wait(1);
Data Table( "Transpose of Tool_History" ):Tools << Delete Formula;你要付出很多努力才能得到结果。下面是我创建的最后一个公式的简单修改,删除了前面的“/”
New Column( "Result",
Character,
"Nominal",
set each value(
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Substr(
Char( Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" ) ),
2
);
)
);
这是一个带有示例数据表的完整示例
Names Default To Here( 1 );
// Create a sample data table
New Table( "Sample",
Add Rows( 3 ),
Set Header Height( 46 ),
New Column( "lot",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1324567, 1324567, 1324567] )
),
New Column( "step", Character, "Nominal", Set Values( {"Material", "Material", "Material"} ) ),
New Column( "substep", Character, "Nominal", Set Values( {"Deposit", "CD Measure", "Measure"} ) ),
New Column( "Label", Character, "Nominal", Set Values( {"machine", "machine", "machine"} ) ),
New Column( "Row 1", Character, "Nominal", Set Values( {"Machine A", "Caliper 1", "Tapemeasure 1"} ) ),
New Column( "Row 2", Character, "Nominal", Set Values( {"", "Caliper 2", ""} ) ),
New Column( "Row 2 2", Character, "Nominal", Set Values( {"Machine A", "", ""} ) ),
New Column( "Row 4", Character, "Nominal", Set Values( {"", "", "Tapemeasure 3"} ) ),
New Column( "Row 5", Character, "Nominal", Set Values( {"Machine B", "", ""} ) ),
New Column( "Row 6", Character, "Nominal", Set Values( {"", "", ""} ) ),
New Column( "Row 7", Character, "Nominal", Set Values( {"", "", ""} ) )
);
// Add the concatenated column, with the "/" removed from begining
New Column( "Result",
Character,
"Nominal",
set each value(
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Substr(
Char( Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" ) ),
2
);
)
);