Script JSL per trasporre le colonne in righeNon sono sicuro di come iniziare, vorrei aiuto con uno script che trasponga automaticamente le colonne scelte specifiche in righe.
so come farlo manualmente, ma ho bisogno di uno script poiché si tratta di un'attività molto ripetitiva per centinaia di file di dati
vedere il file jmp allegato per un campione di dati e i risultati desiderati
apprezzerei molto il tuo aiuto
Tabella datiScriptingOggetto: script JSL per trasporre colonne in righeLo script seguente è un buon inizio per creare la tabella di output richiesta
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the values to the new columns
For( i = 1, i <= N Rows( dtTrans2 ), i++,
dtTrans2:Column 1[i] = Word( 1, dtTrans2:Label[i], ":" );
dtTrans2:Column 2[i] = Word( 2, dtTrans2:Label[i], ":" );
specs = Column( dt, dtTrans2:Label[i] ) << get property( "spec limits" );
If( Is Missing( specs["LSL"] ) == 0,
dtTrans2:Column 3[i] = specs["LSL"]
);
If( Is Missing( specs["USL"] ) == 0,
dtTrans2:Column 4[i] = specs["USL"]
);
If( Column( dt, dtTrans2:Label[i] ) << get property( "Units" ) != "",
dtTrans2:Column 5[i] = Column( dt, dtTrans2:Label[i] ) << get property( "Units" )
);
);
// Get rid of the label column which is no longer needed
dtTrans2 << delete columns( :Label );
// Change the names of the Trans2 table to match the names in the Trans1 table
For( i = 6, i <= N Cols( dtTrans2 ), i++,
Column( dtTrans2, i ) << set name( "Column " || Char( i ) )
);
// Combine the 2 Transformed data tables
dtFinal = dtTrans1 << concatenate( dtTrans2 );
// Cleanup the no longer needed data tables
close( dtTrans1, nosave );
close( dtTrans2, nosave );Oggetto: script JSL per trasporre colonne in righeGrazie! questo sembra funzionare bene. Ma per qualche motivo le colonne del nome del test Lo Limit e Hi limits vengono inserite per ultime. in qualche modo possiamo riorganizzarli ed etichettarli nella sceneggiatura?

Oggetto: script JSL per trasporre colonne in righeQuale versione di JMP stai utilizzando?Oggetto: script JSL per trasporre colonne in righeSto usando jmp 14
Oggetto: script JSL per trasporre colonne in righeEcco una versione corretta dello script, che posiziona le colonne delle specifiche, ecc. Nella posizione corretta e aggiunge anche le etichette delle colonne
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the columns 2-5 in the trans data table
dtTrans1 << Add Multiple Columns( "xColumn", 4,after(:Column 1), Character );
for(i=2,i<=5,i++,
column(dtTrans1,i)<<SET name=""></SET>Oggetto: script JSL per trasporre colonne in righegrazie Jim! il formato è perfetto. tuttavia non funziona con altri set di dati simili per qualche motivo. qualsiasi motivo per cui?
Oggetto: script JSL per trasporre colonne in righeSono presenti messaggi di errore nel registro?
Quali sono le differenze tra le 2 tabelle di dati?
Lo script si interrompe prima del completamento?
Oggetto: script JSL per trasporre colonne in righenon ci sono errori di registro. quando eseguo lo script, semplicemente non fa nulla. l'unica differenza sono i nomi dei test ... sono diversi. ma tutte le altre intestazioni sono le stesseOggetto: script JSL per trasporre colonne in righeProva a eseguire il codice dalla riga 1 alla riga 26. Tutto quello che devi fare è selezionare (evidenziare) quelle righe nello script, quindi fare clic sull'icona Esegui.
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
Verifica se la tabella dati Transpose 1 ha il seguente aspetto:

Le linee 30-35
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
e controlla se parameterColNamesList contiene i nomi di tutti i test nella tabella dei dati.
Quindi continua a controllare le diverse sezioni di codice, finché non trovi cosa non funziona correttamente.
Se puoi fornirmi una copia della tabella dati che stai cercando di leggere, sarei disposto a fare il controllo da solo.
Oggetto: script JSL per trasporre colonne in righeok certo eccolo qui
Oggetto: script JSL per trasporre le colonne in righeecco un campione casuale di dati
Ri: script JSL per trasporre colonne in righeignorare il campione precedente, si prega di utilizzare questo
Oggetto: script JSL per trasporre le colonne in righeeccone uno
Oggetto: script JSL per trasporre colonne in righeIl problema era che uno o più parametri venivano inseriti come dati di carattere.Il Transpose non può gestire dati misti.Quindi ho aggiunto un controllo per assicurarmi che tutti i parametri rilevati siano numerici.
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the columns 2-5 in the trans data table
dtTrans1 << Add Multiple Columns( "xColumn", 4,after(:Column 1), Character );
for(i=2,i<=5,i++,
column(dtTrans1,i)<<SET name=""></SET>Oggetto: script JSL per trasporre colonne in righegrazie jim ma ho ancora lo stesso errore con lo script aggiornato per alcuni motivi

Oggetto: script JSL per trasporre colonne in righeErrore mio .... per errore, l'ultima voce che ti ho inviato non aveva le mie modifiche. Ho modificato la mia ultima risposta e aggiornato il JSL. Per favore torna indietro, tira il JSL ed eseguilo. Ora contiene il codice corretto.Re: Script JSL per trasporre colonne in righegrazie jim