Ciao,
Ho il seguente problema:
a) Sto generando una tabella (chiamiamola tabella dt) con più colonne. Tuttavia, mi interessa guardare solo il pattern specifico (ad esempio - "ABC @ XYZ") nei nomi delle colonne insieme ad altre due colonne (ad esempio - "LCOL", "WCOL"). Sto generando quella tabella. (Chiamando quella tabella dtB)
Il prossimo
b) Uso la tabella dtB, estrae la sua colonna e uso un ciclo for per generare una tabella di riepilogo per ciascuna di queste colonne che corrisponde al modello in Col Name.
c) Ho creato una tabella vuota dt_sum_all
d) Ora il mio obiettivo è ottenere tutti i valori di riepilogo delle colonne che corrispondono al modello in una tabella insieme alle colonne LCOL e WCOL. (Ricevo N tabelle per N di tali colonne, se non uso la nuova tabella, ma non è quello che voglio - Voglio 1 tavolo )
e ) Inoltre alla fine una volta che ho una singola tabella, voglio rinominare le Col (di solito aggiunge SUM all'inizio di ogni colonna), come SUM ( ABC @ XYZ_1AS ) per ABC @ XYZ_1AS . Dato che ho molte colonne, voglio farlo in un ciclo o simile.
Quello che ho fino ad ora è il seguente:
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]);
);
Il codice sopra non funziona e non ricevo una tabella. Qualcuno può aiutare, per favore.
Se sto leggendo correttamente il tuo codice, ciò che vuoi ottenere è una tabella di dati di riepilogo per un insieme di colonne che corrispondono a un modello nella tabella di dati originale.
Credo che stavi lavorando molto più duramente del dovuto. Di seguito è riportato uno script di esempio, che utilizza la maggior parte del codice, ma lavora sulla tabella dei dati di esempio di Semiconductor Capability, in cui i nomi delle colonne lot e wafer sono lot_id e wafer, anziché Lcol e Wcol. Ho eliminato la tabella dati dtB, perché a meno che non sia necessario per qualcosa più avanti nello script, certamente non ha bisogno di essere creata solo per poi andare a creare dati di riepilogo per essa. I dati di riepilogo possono provenire direttamente dalla tabella dati originale. Inoltre, non è necessario riepilogare ciascuna colonna una alla volta. Tutte le colonne possono essere facilmente riepilogate contemporaneamente. Pertanto, non è necessario eseguire alcun aggiornamento. Infine, c'è un'opzione nella piattaforma di riepilogo, che consentirà di assegnare ai nomi delle colonne lo stesso nome del nome della colonna di input, quindi non è necessario rinominare le colonne nella tabella di riepilogo.
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" )
);