JSL non imposta il formato della colonnaCiao a tutti,
Sto provando a copiare i nomi delle colonne, i tipi di dati, i tipi di modellazione e i formati da una tabella a una nuova, ma quando provo a impostare il formato della colonna, non ci vuole mai e torna semplicemente a "Migliore". Ho sbattuto la testa contro questo per un po 'e sono completamente perplesso perché non funziona. Di seguito è riportato il mio codice e l'output risultante che mostra che il formato della colonna è valido ma non si attacca. Non ci sono errori segnalati nel registro. Qualcuno può vedere cosa sto facendo male?
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>Bonus domanda di follow-up : Riesco solo a impostare i dati della colonna e i tipi di modellazione utilizzando il codice sopra in cui ho impostato i tipi dopo che la colonna è stata inizializzata. Quando provo a eseguire la riga sottostante, le colonne semplicemente non vengono inizializzate, perché no?
newCol = summaryTable << New Column( colNames[i], colType, colModel );
ScriptingRi: JSL non imposta il formato della colonnaRingrazia tutti. Ho pensato di copiare la tabella ed eliminare le righe. La tabella dati è composta da circa 2 dozzine di colonne e può contenere potenzialmente centinaia di righe. Ho pensato che la creazione di 2 dozzine di colonne in modo iterativo potesse essere più efficiente rispetto alla potenziale eliminazione di centinaia di righe.@pmroz L'approccio per sottoinsiemi di è comunque intelligente, potrei semplicemente usarlo.
Ri: JSL non imposta il formato della colonnaSupponendo che il tavolo non sia enorme e basandosi sul pensiero di Mark, in alternativa potresti farlo in questo modo:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt << getScript);
dt2 << selectAllRows;
dt2 << deleteRows;Ri: JSL non imposta il formato della colonnaLogica più semplice che utilizza il sottoinsieme:
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");
Ri: JSL non imposta il formato della colonnaGrazie per le risposte. Immagino di non aver menzionato che i "dati" sono una tabella già esistente creata da più query e calcoli SQL. Vorrei assemblare una tabella riepilogativa con le stesse colonne di "dati" senza effettivamente sottoimpostarla. Successivamente riempio le righe in modo a tratti.
@pmroz Il tuo approccio funziona, grazie! Continuo a non capire perché il puntatore non funzioni, ma sono così sopra che non mi interessa più.
Ri: JSL non imposta il formato della colonnaQuesto codice lo farà:
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));
);
);Ri: JSL non imposta il formato della colonnaSarebbe più semplice salvare una copia della tabella dati originale e aprire la copia per continuare?
Ri: JSL non imposta il formato della colonnaCIAO,
Innanzitutto, penso che "dati" non sia definito.
Clear Globals();
summaryTable = New Table( "Results Summary" );
colNames = data << Get Column Names( string );
Il risultato è
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 ) /*###*/
{}