JSL: cómo cambiar una columna a un entero de 1 byteEstoy trabajando con archivos grandes y estoy tratando de ser más ahorrativo cuando se trata de memoria. Quiero cambiar el tipo de datos para algunas columnas a "entero de 1 byte" usando JSL pero no puedo resolverlo.
Configuré mis preferencias de tabla en "Permitir formato de datos numéricos cortos" y puedo cambiar el tipo de datos de una columna a mano, pero necesito hacerlo con JSL.Si cambio el tipo de datos a mano y luego copio y pego la columna en un script, veo que el tipo de datos para un entero de 1 byte parece ser "Numérico (1)". Tal vez eso sea una pista.
Aquí hay algunas cosas que he probado:
dt = open("$sample_data/big class.jmp");
dt:age << Data Type(1-byte integer); //error "Agument to Type..."
dt:age << Data Type("1-byte integer"); //error "Agument to Type..."
dt:age << Data Type(Character); //this works, changes to Character
dt:age << Data Type(Numeric); //this works, changes to Numeric
dt:age << Data Type(Numeric(1)); //no error, but data type stays NumericProbablemente sea algo simple, pero hasta ahora no he encontrado ninguna solución en la Ayuda o la Comunidad de JMP. Cualquier ayuda sería apreciada. (Estoy en JMP 16.1.)
Tabla de datossecuencias de comandosRe: JSL: Cómo cambiar una columna a un entero de 1 bytePara configurar una columna existente en formato de 1 byte, mire este ejemplo:
// set JMP preferences to accept short numeric words
Set Preference( Allow short numeric data format( 1 ) );
dt = New Table( "Untitled",
Add Rows( 3 ),
New Column( "1 Byte Format",
Numeric( 1 ),
"Continuous",
Set Values( [1, 2, 3] )
),
New Column( "New Column",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 5, 6] )
)
);
dt:New Column << set data type("numeric", 1);Re: JSL: Cómo cambiar una columna a un entero de 1 byteAquí hay un ejemplo para hacer una nueva variable como una columna de datos con una longitud de palabra corta para enteros con signo usando un solo byte.
Names Default to Here( 1 );
// open target data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// set JMP preferences to accept short numeric words
Set Preference( Allow short numeric data format( 1 ) );
// create a new column using shortened numeric data type
shorty = dt << New Column( "Short Age", Numeric( 1 ), Continuous,
Values( :age << Get As Matrix )
);
// your done. maybe set preference back to default
Set Preference( Allow short numeric data format( 0 ) );
Re: JSL: Cómo cambiar una columna a un entero de 1 byte¡Gracias! Tenía la esperanza de encontrar una manera de decirle a JMP cuando cree la columna que solo serán unos y ceros y, por lo tanto, un entero de 1 byte es suficiente.
Me parece extraño que pueda forzar que una columna sea un número entero de 1, 2 o 4 bytes usando los menús de propiedades de la columna, pero no puedo hacerlo con secuencias de comandos.Me pregunto si esto tiene que ver con el hecho de que hay una opción de preferencia que permite estos tipos de datos y JSL no es lo suficientemente "inteligente" para saber si está habilitado pero la GUI sí lo está.

La compresión es una solución, pero aún estaría interesado si alguien sabe cómo configurar el tipo de modelado antes de completar la columna.
Re: JSL: Cómo cambiar una columna a un entero de 1 byteBuscar índice de secuencias de comandos con "1 byte":

Parece estar funcionando:

Re: JSL: Cómo cambiar una columna a un entero de 1 byteTenga en cuenta.
El tipo entero de n bits es útil para comprimir las columnas.
Por otra parte, el usuario debe tener cuidado con los cálculos posteriores, especialmente cuando el cálculo se inicia a través de
clic derecho / Nueva columna de fórmula / Menú Fórmula:

Vamos a empezar con
dt = New Table( "numeric data",
Add Rows( 3 ),
New Column( "numeric 1 byte Integer",
Numeric( 1 ),
Set Values( [1,2,3] ),
),
New Column( "numeric (default)",
Numeric,
Set Values( [10,20,30] ),
)
);
y calcular

JMP copia el tipo de datos de la columna de entrada y en lugar de 0,1, devolverá:

Por otro lado, cuando el usuario selecciona ambas columnas de entrada y calcula el "ratio" mediante:

JMP crea la columna con

configurando... y el resultado es 0.1:
