將多個數據表從一個循環級聯/合併/更新你好
我有以下問題:
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" )
);