Come completare la concatenazione della tabella di loop nell'array di memoria e quindi generare la tabella di dati una volta?Uso "Big Class.jmp" per spiegare i requisiti di funzionamento:
Sto seguendo il codice per completare, ma la velocità è lenta.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula( If( Row() == dt[i, 6] + 1, 10, Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) ) ) );
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = Current Data Table(),
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
d1 << Close Window;
);
);
1. Crea una nuova colonna "test" per calcolare "peso" - "altezza"
2. Generare la nuova tabella in base ai seguenti requisiti e collegarli alla prima nuova tabella generata:
Ogni nuovo modulo ha tre colonne: "nome", "passaggio" e "livello". Il numero di righe nella nuova tabella è il valore "test" di ciascun nome ottenuto nel primo passaggio
La colonna "passaggio" indica i dati che iniziano con "altezza", aumentando di 1 per ogni riga verso il basso e fino alla riga "peso"
colonna "livello": dividere queste righe in modo uniforme in 10 segmenti da piccoli a grandi. Il numero di righe per paragrafo può variare.
3. Unisci il tavolo uno per uno in un tavolo.

Come completare la concatenazione della tabella di loop nell'array di memoria e quindi generare la tabella di dati una volta?
Grazie esperti!
Ri: Come completare la concatenazione della tabella di loop nell'array di memoria e quindi generare una volta la tabella di dati?Anziché dover modificare il codice in passaggi che utilizzano solo variabili e matrici di memoria, la mia modifica di seguito sfrutta l'opzione "Privato" per le tabelle di dati. Consente di creare tabelle di dati che non sono visualizzabili. Pertanto, eliminando tutto il sovraccarico della creazione degli oggetti necessari per visualizzarli. Il mio codice ha ridotto i tempi di elaborazione di almeno la metà.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "test", formula( :weight - :height ) );
dt << run formulas;
Wait( 0 );
For( i = 1, i <= N Row( dt ), i++,
d1 = New Table( "a",
private,
Add Rows( dt[i, 6] + 1 ),
New Column( "name", Character, Nominal ),
New Column( "step", Continuous ),
New Column( "level", Continuous )
);
d1[1 :: N Row( d1 ), 1] = dt[i, 1];
Column( "step" ) << Formula( dt[i, 4] + (Row() - 1) );
d1 << run formulas;
Column( "step" ) << deleteFormula;
Column( "level" ) << Formula(
If( Row() == dt[i, 6] + 1,
10,
Ceiling( (Row()) / ((dt[i, 6] + 1) / 9.9) )
)
);
d1 << run formulas;
Column( "level" ) << deleteFormula;
If( i == 1,
d2 = d1,
Current Data Table( dt );
d2 << Concatenate( Data Table( d1 ), Append to first table );
Close(d1, nosave);
);
);
dtFinal = d2 << subset( selected rows( 0 ), selected columns( 0 ) );<BR />Close(d2,nosave);
Consulta la Guida agli script per informazioni sull'opzione Privato
Ri: Come completare la concatenazione della tabella di loop nell'array di memoria e quindi generare una volta la tabella di dati?privato,
Grazie Jim!