JSL no establecerá el formato de columnaHola a todos,
Estoy tratando de copiar los nombres de las columnas, los tipos de datos, los tipos de modelado y los formatos de una tabla en una nueva, pero cuando trato de establecer el formato de la columna, nunca toma y vuelve a "Mejor". Me he estado golpeando la cabeza contra esto durante un tiempo y estoy completamente perplejo por qué no funciona. A continuación se muestra mi código y el resultado resultante que muestra que el formato de la columna es válido pero no se mantiene. No hay errores reportados en el registro. ¿Alguien puede ver lo que estoy haciendo 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> Pregunta de seguimiento de bonificación : Parece que solo puedo configurar los datos de la columna y los tipos de modelado utilizando el código anterior donde establezco los tipos después de que la columna se haya inicializado. Cuando intento ejecutar la línea de abajo, las columnas simplemente no se inicializan, ¿por qué no?
newCol = summaryTable << New Column( colNames[i], colType, colModel );
Re: JSL no establecerá el formato de columnaHola,
En primer lugar, creo que los "datos" no están definidos.
Clear Globals();
summaryTable = New Table( "Results Summary" );
colNames = data << Get Column Names( string );
El resultado es
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 ) /*###*/
{}Re: JSL no establecerá el formato de columna¿Sería más fácil guardar una copia de la tabla de datos original y abrir la copia para continuar?
Re: JSL no establecerá el formato de columnaEste código lo hará:
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 no establecerá el formato de columnaGracias por las respuestas. Supongo que no mencioné que "datos" es una tabla ya existente creada a partir de múltiples consultas y cálculos de SQL. Me gustaría ensamblar una tabla de resumen con las mismas columnas que "datos" sin realmente subordinarla. Más tarde lleno las filas de una manera a trozos.
@pmroz Su enfoque funciona, gracias! Todavía no entiendo por qué el puntero no funciona, pero estoy tan sobre esto que ya no me importa.
Re: JSL no establecerá el formato de columnaLógica más simple que usa subconjunto:
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 no establecerá el formato de columnaSuponiendo que la mesa no es enorme, y basándose en el pensamiento de Mark, alternativamente, podría hacerlo de esta manera:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Eval(dt << getScript);
dt2 << selectAllRows;
dt2 << deleteRows;Re: JSL no establecerá el formato de columnaGracias a todos. Consideré copiar la tabla y borrar filas. La tabla de datos consta de aproximadamente 2 docenas de columnas y puede contener potencialmente cientos de filas. Pensé que crear 2 docenas de columnas de forma iterativa podría ser más eficiente que eliminar cientos de filas. @pmroz El enfoque del subconjunto es inteligente, aunque podría usarlo.