Comment terminer la concaténation de la table de bouclage dans la matrice mémoire puis générer une fois la table de données?J'utilise "Big Class.jmp" pour expliquer les exigences de fonctionnement:
Je suis le code pour terminer, mais la vitesse est lente.
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. Créer une nouvelle colonne "test" pour calculer "poids" - "hauteur"
2. Générez la nouvelle table en fonction des exigences suivantes et fusionnez-les dans la première nouvelle table générée:
Chaque nouveau formulaire comporte trois colonnes: "nom", "étape" et "niveau". Le nombre de lignes dans le nouveau tableau est la valeur "test" de chaque nom obtenu à la première étape
La colonne "step" correspond aux données commençant par "height", augmentant de 1 pour chaque ligne jusqu'à la ligne "weight"
Colonne "niveau": divisez ces lignes de manière égale en 10 segments de petit à grand. Le nombre de lignes par paragraphe peut varier.
3. Splice la table une par une en une table.

Comment terminer la concaténation de la table de bouclage dans la matrice mémoire puis générer une fois la table de données?
Merci les experts!
Re: Comment terminer la concaténation de la table en boucle dans le tableau de mémoire, puis générer une fois la table de données?Plutôt que d'avoir à modifier votre code en étapes qui n'utilisent que des variables de mémoire et des matrices, ma modification ci-dessous profite de l'option "Privé" pour les tableaux de données. Il permet de créer des tableaux de données non affichables. Ainsi, éliminer tous les frais généraux de la création des objets nécessaires pour les afficher. Mon code a réduit le temps de traitement d'au moins la moitié.
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);
Consultez le Guide de script pour plus d'informations sur l'option Private
Re: Comment terminer la concaténation de la table en boucle dans le tableau de mémoire, puis générer une fois la table de données?privé,
Merci Jim!