你好,
我有以下問題:
a) 我正在產生一個包含多個列的表(稱為表 dt)。不過,我只想查看列名稱中的特定模式(例如“ABC@XYZ”)以及其他兩列(例如“LCOL”、“WCOL”)。我正在生成該表。 (將該表稱為 dtB)
下一個
b) 我使用表 dtB,拉出其列並使用 for 循環為每個與 Col Name 中的模式匹配的此類列生成匯總表。
c) 我建立了一個空表列表,dt_sum_all
d) 現在我的目標是取得與模式相符的列的所有總計值以及 LCOL 和 WCOL 列到一張表中。 (如果我不使用新表,我將獲得 N 個此類列的 N 個表,但這不是我想要的 -我想要 1 個表)
e)最後,一旦我有了一個表,我想重命名 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 = {};
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);
);
Insert Into(dt_sum_all, dt_sum);
//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]);
///);上面的程式碼不起作用,我為每一列獲取多個表,而不是一個合併/更新的表。所以沒有得到一張桌子。任何人都可以幫忙嗎?謝謝。
如果我正確閱讀了您的代碼,那麼您最終想要的是一組與原始數據表中的模式匹配的列的匯總數據的數據表。
我相信你比你必須更努力地工作。下面是一個示例腳本,使用了您的大部分代碼,但處理的是 Semiconductor Capability 示例數據表,其中批次和晶圓列的名稱是 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" )
);