JSL ne définit pas le format de colonneSalut tout le monde,
J'essaie de copier les noms de colonne, les types de données, les types de modélisation et les formats d'une table dans une nouvelle, mais lorsque j'essaie de définir le format de colonne, cela ne prend jamais et revient simplement à "Meilleur". Je me suis cogné la tête contre cela pendant un moment et je suis complètement perplexe sur la raison pour laquelle cela ne fonctionne pas. Ci-dessous se trouve mon code et la sortie résultante qui montre que le format de colonne est valide mais ne colle tout simplement pas. Aucune erreur n'est signalée dans le journal. Quelqu'un peut-il voir ce que je fais mal?
summaryTable = New Table( "Results Summary" );
colNames = data << Get Column Names( string );
For( i = 1, i <= N Items( colNames ), i++,
colType = Column( data, colNames[i] ) << Get Data Type;
colModel = Column( data, colNames[i] ) << Get Modeling Type;
colFormat = Column( data, colNames[i] ) << Get Format;
Show( colNames[i] );
Show( colType );
Show( colModel );
<STRONG> Show( colFormat );</STRONG>
newCol = summaryTable << New Column( colNames[i] );
newCol << Data Type( colType ) << Modeling Type( colModel );
If( colType != "Character",
newCol << Format( colFormat );
<STRONG> Show( newCol << Get Format );</STRONG>
);
);
colNames[i] = "Label";
colType = "Character";
colModel = "Nominal";
colFormat = Format("Best");
colNames[i] = "Start_Time";
colType = "Numeric";
colModel = "Continuous";
<STRONG>colFormat = Format("m/d/y h:m:s", 23, 0);
newCol << Get Format = Format("Best", 10);</STRONG>
colNames[i] = "End_Time";
colType = "Numeric";
colModel = "Continuous";
<STRONG>colFormat = Format("m/d/y h:m:s", 23, 0);
newCol << Get Format = Format("Best", 10);</STRONG>Question de suivi bonus : Je n'arrive qu'à définir les données de colonne et les types de modélisation à l'aide du code ci-dessus où je définis les types après l'initialisation de la colonne. Lorsque j'essaie d'exécuter la ligne ci-dessous, les colonnes ne s'initialisent tout simplement pas, pourquoi pas ?
newCol = summaryTable << New Column( colNames[i], colType, colModel );
ScriptRe : JSL ne définit pas le format de colonneMerci a tous. J'ai envisagé de copier le tableau et de supprimer des lignes. La table de données se compose d'environ 2 douzaines de colonnes et peut contenir potentiellement des centaines de lignes. J'ai pensé que la création itérative de 2 douzaines de colonnes pourrait être plus efficace que la suppression potentielle de centaines de lignes.@pmroz L'approche de sous-ensemble de est intelligente cependant, je pourrais simplement l'utiliser.
Re : JSL ne définit pas le format de colonneEn supposant que le tableau n'est pas énorme, et en s'appuyant sur la pensée de Mark, vous pouvez également le faire de cette façon :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt << getScript);
dt2 << selectAllRows;
dt2 << deleteRows;Re : JSL ne définit pas le format de colonneLogique plus simple qui utilise un sous-ensemble :
data = New Table( "Test Data", Add Rows( 3 ),
New Column( "Column 1", Numeric, "Continuous", Format( "Fixed Dec", 8, 0 ),
Set Values( [1, 2, 3] )
),
New Column( "Column 2", Character, "Nominal", Set Values( {"c", "b", "a"} ) ),
New Column( "Column 3", Numeric, "Continuous", Format( "m/d/y", 10 ),
Input Format( "m/d/y" ),
Set Values( [3630873600, 3633552000, 3635971200] )
)
);
summaryTable = data << Subset( Rows( [1] ));
summarytable << delete rows([1]) << set name( "Results Summary");
Re : JSL ne définit pas le format de colonneMerci pour les réponses. Je suppose que j'ai omis de mentionner que "data" est une table déjà existante créée à partir de plusieurs requêtes et calculs SQL. Je voudrais assembler un tableau récapitulatif avec les mêmes colonnes que "données" sans le sous-ensemble. Plus tard, je remplis les rangées par morceaux.
@pmroz Votre approche fonctionne, merci! Je ne comprends toujours pas pourquoi le pointeur ne fonctionne pas, mais j'en ai tellement fini que je m'en fiche.
Re : JSL ne définit pas le format de colonneCe code le fera :
data = New Table( "Test Data", Add Rows( 3 ),
New Column( "Column 1", Numeric, "Continuous", Format( "Fixed Dec", 8, 0 ),
Set Values( [1, 2, 3] )
),
New Column( "Column 2", Character, "Nominal", Set Values( {"c", "b", "a"} ) ),
New Column( "Column 3", Numeric, "Continuous", Format( "m/d/y", 10 ),
Input Format( "m/d/y" ),
Set Values( [3630873600, 3633552000, 3635971200] )
)
);
summaryTable = New Table( "Results Summary" );
colNames = data << Get Column Names( string );
For( i = 1, i <= N Items( colNames ), i++,
colType = Column( data, colNames[i] ) << Get Data Type;
colModel = Column( data, colNames[i] ) << Get Modeling Type;
colFormat = char(Column( data, colNames[i] ) << Get Format);
Show( colNames[i] );
Show( colType );
Show( colModel );
Show( colFormat );
newCol = summaryTable << New Column( colNames[i] );
newCol << Data Type( colType ) << Modeling Type( colModel );
if (coltype != "Character",
new_expr = "newcol << " || colformat;
eval(parse(new_expr));
);
);Re : JSL ne définit pas le format de colonneSerait-il plus simple d'enregistrer une copie du tableau de données d'origine et d'ouvrir la copie pour continuer ?
Re : JSL ne définit pas le format de colonneSalut,
Tout d'abord, je pense que les "données" ne sont pas définies.
Clear Globals();
summaryTable = New Table( "Results Summary" );
colNames = data << Get Column Names( string );
Le résultat est
Data Table( "Results Summary" )
//:*/
colNames = data << Get Column Names( string );
/*:
Send Expects Scriptable Object in access or evaluation of 'Send' , data << /*###*/Get Column Names( string ) /*###*/
In the following script, error marked by /*###*/
colNames = data << /*###*/Get Column Names( string ) /*###*/
{}