将多个数据表从一个循环级联/合并/更新你好
我有以下问题:
a)我正在生成具有多个列的表(称为表dt)。但是,我只关注列名中的特定模式(例如-“ ABC @ XYZ”)以及其他两列(例如“ LCOL”,“ WCOL”)。我正在生成该表。(将该表称为dtB)
下一个
b)我使用表dtB,拉出其列,并使用for循环为与“列名”中的模式匹配的每个此类列生成一个摘要表。
c)我创建了一个空表dt_sum_all
d)现在,我的目标是获得与模式匹配的所有列的汇总值以及LCOL和WCOL列。(如果不使用新表,我将获得N个此类列的N个表,但这不是我想要的- 我要一张桌子 )
Ë )同样在最后,当我只有一个表时,我想重命名Cols(通常在每列的开头追加SUM),就像SUM( ABC @ XYZ_1AS ) 至 ABC @ XYZ_1AS 。由于我有很多列,因此我想循环执行或类似操作。
到目前为止,我所拥有的是:
dt = currentdatatable();
Wait(1);
colsd = dt << get column names( string );
pattern = "ABC@XYZ";
nd = N Items( colsd );
selCols = {"LCOL", "WCOL"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dtB = dt << Subset(
All rows,
Columns(selCols)
);
colNameList= dtB << get column names( string );
Wait(1);
dt_sum_all = New Table();
For( i = 1, i <= N Items( colNameList ), i++,
If( Contains( colNameList[i], pattern),
dt_sum = dtB << Summary(
Group( :LCOL, :WCOL ),
Sum(colNameList[i]),
Freq( "None" ),
Weight( "None" )
) << show window(0);
);
Data Table (dt_sum_all) << Update (
With(Data Table(dt_sum)),
//Match Columns(:LCOL = :LCOL, :WCOL=:WCOL)
);
////column(dt_sum, "SUM("||colNameList[i] || ")" ) << set name(colNameList[i]);
);
上面的代码不起作用,我没有一张桌子。谁能帮忙。
数据表脚本编写关于:将多个数据表从一个循环级联/合并/更新关于:将多个数据表从一个循环级联/合并/更新如果我正确地阅读了您的代码,那么最终想要得到的是汇总数据的数据表,该数据表是与原始数据表中的模式匹配的一组列的集合。
我相信您的工作比以前要辛苦得多。 下面是一个示例脚本,使用了大多数代码,但使用的是半导体能力示例数据表,其中批次和晶圆列的名称分别是lot_id和晶圆,而不是Lcol和Wcol。 我已经消除了dtB数据表,因为除非您稍后在脚本中需要它,否则肯定不需要创建它,然后再为其创建摘要数据。 摘要数据可以直接来自原始数据表。 同样,无需一次汇总每一列。 所有列都可以轻松地一次汇总。 因此,不需要运行Updatie。 最后,摘要平台中有一个选项,可以为列名指定与输入列名相同的名称,因此无需在摘要表中对列进行重命名。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Wait( 0 );
colsd = dt << get column names( string );
pattern = "PNP";
nd = N Items( colsd );
selCols = {"lot_id", "wafer"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dt_sum = dt << Summary(
Group( :lot_id, :wafer ),
Sum( colNameList[Index( 3, N Items( colNameList ) )] ),
Freq( "None" ),
Weight( "None" ),
link to original data table( 0 ),
statistics column name format( "column" )
);