Fecha corta () que crea una columna de caracteres bloqueadaCuando creo una columna de "fecha" en el script a continuación, crea una columna bloqueada (por lo que no puedo cambiar el formato). La fecha corta () en la fórmula parece ser el problema.
La columna de tiempo permanece como numérica después de aplicar la fórmula.
¿Cómo consigo que la "Fecha" permanezca numérica?
La fecha es posterior en un calendario () para configurar el calendario para mostrar solo los días que hay datos presentes.
_____________________________________________________
//Open
dt_run = Open( "data.jmp");
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"), Input Format( "m/d/y h:m:s"));
Column( "Date") << Add Column Properties( Formula( Short Date( :Name( "Date & Time" ) ) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"), Input Format( "m/d/y h:m:s"));
Column( "Time") << Add Column Properties( Formula( Time Of Day( :Name( "Date & Time" ) ) ) );Gracias
Mate
Re: Fecha corta () creando una columna de caracteres bloqueadaLos problemas que tiene son la comprensión de lo que devuelve la función Fecha corta (). No devuelve un valor de fecha JMP, que sería el número de segundos desde las 12:00 am, 1 de enero de 1904, sino que devuelve una cadena literal de la parte de fecha de un valor de fecha JMP. Para ilustrar esto, el siguiente JSL muestra lo que devuelve Fecha corta ():
show(short date(today())); <BR />
y vuelve
Short Date(Today()) = "12/03/2019";
Y dado que en su JSL devolvió una cadena literal, cambió la columna Fecha a una columna de caracteres.
Realmente, lo que desea es usar la función DateMDY () para crear el valor de la fecha.
A continuación se muestra una versión modificada de su código que hace lo que creo que necesita:
Names default to here(1);
dt_run = new table("data",add rows(1), new column("Date & Time",formula(today()),format("m/d/y h:m:s")));
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"));
Column( "Date") << set Formula( DateMDY(Month(:Name( "Date & Time" )),Day(:Name( "Date & Time" )),Year(:Name( "Date & Time" )) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"));
Column( "Time") << set Formula( Time Of Day( :Name( "Date & Time" ) ) );Re: Fecha corta () creando una columna de caracteres bloqueadaJim
Gracias por una respuesta tan bien explicada. Tus publicaciones son siempre informativas, educativas y fáciles de seguir.
MateRe: Fecha corta () creando una columna de caracteres bloqueadaSi reflexiona un poco más sobre su JSL ....... podría usar lo siguiente para completar su columna Fecha
Column( "Date") << set Formula( informat(Short Date( :Name( "Date & Time" ) ), "mm/dd/yyyy") );
Solo usa la función Informat (), que toma una cadena literal y devuelve un valor numérico de fecha JMP
Re: Fecha corta () creando una columna de caracteres bloqueadaTambién puede hacerlo usando solo el número cambiando la fecha y hora de segundos a días y piso.
Names Default to Here( 1 );
dt = New Table( "Test",
Add Rows( 1 ),
New Column( "DateTime",
Numeric,
"Continuous",
Format( "m/d/y h:m:s", 23, 0 ),
Formula( Today() ),
)
);
dt << New Column("Date",
Numeric,
"Continuous",
Format( "m/d/y", 23 ),
Formula(
num_s_per_day = 24*60*60; // # seconds/day
Floor(
:DateTime // take the date time which is a number in seconds
/ num_s_per_day // turn it into days by dividing
) // this will round down to the day
* num_s_per_day // turn it back into seconds (a date time)
),
);