こんにちは、
次の問題があります。
a)複数の列を持つテーブル(テーブルdtと呼びます)を生成しています。ただし、他の2つの列(たとえば、「LCOL」、「WCOL」)とともに、col名の特定のパターン(たとえば、「ABC @ XYZ」)だけを見ることに興味があります。そのテーブルを生成しています。(そのテーブルをdtBと呼ぶ)
次
b)テーブルdtBを使用し、その列をプルし、forループを使用して、Col Nameのパターンに一致する各列のサマリーテーブルを生成します。
c)空のテーブルdt_sum_allを作成しました
d)ここでの私の目標は、パターンに一致する列のすべてのサマリー値を、LCOLおよびWCOL列とともに1つのテーブルに取得することです。(新しいテーブルを使用しない場合、N個のそのような列に対してN個のテーブルを取得していますが、それは私が望むものではありません- 1つのテーブルが欲しい )
e )また、最後に、単一のテーブルが作成されたら、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]);
);
上記のコードは機能せず、1つのテーブルを取得できません。誰でも助けてください。
私があなたのコードを正しく読んでいるなら、あなたが最終的に欲しいのは、元のデータテーブルのパターンと一致する一連の列の要約データのデータテーブルです。
あなたは必要以上に一生懸命働いていたと思います。 以下は、ほとんどのコードを使用しているが、Semiconductor Capabilityサンプルデータテーブルで作業しているスクリプトの例です。ここでは、ロットとウェーハの列の名前は、LcolとWcolではなくlot_idとwaferです。 dtBデータテーブルを削除しました。スクリプトの後半で必要にならない限り、データテーブルを作成して要約データを作成する必要がないためです。 要約データは、元のデータテーブルから直接取得できます。 また、各列を一度に1つずつ要約する必要はありません。 すべての列を一度に簡単に要約できます。 したがって、Updatieを実行する必要はありません。 最後に、Summary Platformには、列名に入力列名と同じ名前を付けることができるオプションがあるため、要約テーブルの列の名前を変更する必要はありません。
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" )
);