Hay cuatro valores comunes basados en tiempo con los que podría tener que lidiar en JMP : fechas, horas, fechas y horas y duraciones. Ya sea que importe datos de una base de datos o un archivo plano, que los consulte en JSL o que los use en un eje en JMP, es importante comprender cómo JMP almacena estos valores y las implicaciones de su uso.
Valores de fecha y hora
Los valores de fecha y hora representan una hora específica en una fecha específica, por ejemplo:
- 12:00 p. m., 20 de enero de 2016
- 07Nov1918 15:00
- 20/07/1969 20:17
Como en la mayoría de las aplicaciones analíticas, los valores de fecha y hora se almacenan en JMP como unidades de tiempo desde una hora de referencia. En JMP, la hora de referencia es las 00:00 del 1 de enero de 1904, y las unidades son segundos. Dicho de forma más sencilla: JMP almacena las fechas como el número de segundos transcurridos desde la medianoche del 1 de enero de 1904.
Entonces, los valores numéricos correspondientes a los valores de fecha y hora en mis ejemplos anteriores son:
| Fecha y hora |
Valor de fecha y hora de JMP (segundos desde la medianoche del 1 de enero de 1904) |
| 12:00 p. m., 20 de enero de 2018 |
3536136000 |
| 07Nov1918 15:00 |
468687600 |
| 20/07/196920:17 |
2068661820 |
Fechas
En JMP, los valores de fecha son un caso especial de fecha y hora, ya que asumen que la hora del día es las 00:00. Por lo tanto, simplemente cuentan los segundos desde la medianoche del 1 de enero de 1904 hasta la medianoche de la fecha almacenada.
Veces
Los valores de tiempo representan una hora del día sin fecha específica. JMP almacena los valores de tiempo como el número de segundos transcurridos desde la medianoche. Por lo tanto, 12:01:01 AM es 61. Son 61 segundos desde la medianoche.
Duraciones
Las duraciones no son tan especiales, salvo que son números que representan una cantidad de una unidad de tiempo. Como era de esperar, JMP gestiona mejor las duraciones cuando representan segundos. Hablaremos más sobre esto cuando tratemos el formato de valores basados en tiempo para su visualización.
Dar formato a valores basados en el tiempo para su visualización
Mostrar valores basados en tiempo como una cantidad de segundos no es particularmente útil, por lo que JMP tiene varios formatos de fecha y hora para mostrar estos valores.
Recuerde, sin embargo, que cambiar la forma en que se muestra una fecha no cambia el valor subyacente ni cómo se analiza. Por ejemplo, cambiar el formato a "m/a" (es decir, mes/año) no obligará a JMP a resumir los datos por mes al analizarlos o graficarlos. Para ello, deberá crear una nueva columna que contenga los valores únicos que desea resumir. Para crear estas nuevas columnas, transforme la columna haciendo clic derecho en el encabezado y seleccionando "Nueva columna de fórmula".
Importación de valores basados en el tiempo
Al importar datos, es importante asegurarse de que los valores temporales se almacenen como los valores numéricos descritos anteriormente. Generalmente, JMP lo hará automáticamente al intentar reconocer los valores temporales durante las operaciones de importación o copiado/pegado. Puede comprobar si esto se ha hecho correctamente observando la justificación de los valores de la columna en la tabla de datos. Los valores numéricos se justifican a la derecha y los de carácter, a la izquierda.
Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.Wrong is a character column. Notice it is left-justified. Right is numeric column. It is right-justified.La columna "Wrong" es de caracteres. Observe que está justificada a la izquierda. La columna "Right" es numérica. Está justificada a la derecha.
Si encuentra valores de tiempo almacenados como cadenas de caracteres, puede convertirlos mediante el cuadro de diálogo Información de columna. Simplemente cambie el Tipo de datos a numérico, el Formato al formato de fecha y hora que desee y el Formato de entrada al que describa las cadenas de caracteres de sus datos. JMP convertirá los valores a los valores numéricos correspondientes.
First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.First change the Data Type to Numeric.Primero cambie el Tipo de datos a Numérico.
Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Pick the Format that you want to use to display the time-based value.Seleccione el formato que desea utilizar para mostrar el valor basado en el tiempo.
Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Finally, change the Input format to match the format of the strings in the column.Por último, cambie el formato de entrada para que coincida con el formato de las cadenas en la columna.
Analizar fecha() una función útil
La función Analizar fecha() (y su alias, Informado() ) también es útil para convertir cadenas de caracteres en valores numéricos. Al usarla sin el tercer argumento opcional, escanea la cadena de entrada e intenta encontrar el formato de entrada adecuado. Esto la convierte en una función multipropósito, independientemente del formato de entrada.
Cálculos (es decir, matemáticas) que utilizan valores basados en el tiempo
Almacenar todos estos valores basados en el tiempo como números significa que podemos realizar cálculos matemáticos con ellos para calcular la edad, el tiempo transcurrido desde algún evento, convertir a otras unidades de tiempo, etc.
Por ejemplo, la diferencia entre dos fechas, horas o valores de fecha y hora en JMP será la cantidad de segundos entre los dos valores.
Esto significa que necesitarás convertir el resultado en unidades más amigables como minutos, días, semanas o años (Sugerencia: Las funciones En horas() , En semanas() y otras In...() pueden ayudar aquí).
JMP tiene una serie de funciones integradas para facilitar los cálculos sobre valores basados en el tiempo.
Aquí hay un par de mis favoritos:
Hora del día (fecha y hora)
Esta función devuelve la hora del día (es decir, los segundos transcurridos desde la medianoche) de un valor de fecha y hora. Esto es muy útil para convertir un valor de fecha y hora en un valor de fecha. Solo hay que restar la hora del día() de la fecha y hora:
datetime = Today();
date = datetime - Time Of Day( datetime );
Show( As Date( date ) );
Diferencia de fecha (datetime1, datetime2, "interval_name", <"alignment">)
Esta función devuelve la diferencia entre dos valores de fecha y hora. Claro que puedes hacerlo simplemente restándolos y obtendrás la diferencia de segundos. Sin embargo, Date Difference() permite especificar las unidades de tiempo para devolver la diferencia usando el argumento "interval_name". Por ejemplo:
datetime1 = 01Sep2018:03:00:01;
datetime2 = 04Sep2018:14:10:15;
Date Difference( datetime1, datetime2, "Hour" );
Asegúrate de consultar la lista completa de funciones de fecha y hora . Facilitan enormemente el trabajo con valores basados en la hora.
Constantes de fecha y hora en JSL
Para representar datos de fecha, fecha y hora en JSL, es necesario especificarlos en un formato específico. Para las fechas, debe especificarse en formato ddMONyyyy, y para las horas, en formato dd:hh:mm:ss. Por ejemplo:
time = 14:10:15;
date = 18Jan1957;
datetime = 11Jul2000:03:10:12;
Gracias, @Jeff_Perkinson, por esta excelente descripción general de las funciones disponibles.
El retorno de la inversión que supone volver a leer este artículo y aplicar estas características en nuestros flujos de trabajo diarios es excepcional.
JMP ofrece muchísimas funciones útiles para la importación, la curación y el análisis de datos de fechas, ¡y realmente marcan la diferencia en la práctica!
Además, existen algunas áreas donde faltan funciones o podrían mejorarse, y donde JMP se comporta de forma inesperada. También hay algunos errores, o al menos aspectos que algunos usuarios en todo el mundo perciben como tales, como la diferencia entre "MDY" y "DMY", la importación de fechas y marcas de tiempo desde Unix/Python y los problemas con "Z" o milisegundos.
Si tienes problemas con fechas y horas en tu trabajo diario, comprueba si el problema está en la lista; luego, sigue el enlace y vota.
Si no aparece en la lista, publique su problema a continuación o directamente en la lista de deseos.
Perfeccionemos JMP. Hagámoslo más redondo que el mundo.;)
Características / Comodidad:
Errores / Parece un error:
Aquí tienes otro consejo útil a la hora de realizar la conversión:
Como se mencionó anteriormente, el primer problema con la conversión de fechas es que, en segundo plano, JMP "lee" la fecha como el número de segundos transcurridos desde el 1 de enero de 1904 a las 00:00 (y Excel la "lee" desde el 1 de enero de 1900, que son casi 4 mil millones de segundos, que alcanzaremos el 3 de octubre de 2026 a las 07:06:40). Por eso, a veces verá valores en el rango de 3,9 mil millones al convertir fechas.
En segundo lugar, aunque puedes cambiar el formato de la hora que estás viendo, JMP seguirá interpretándola en el formato original importado. Por ejemplo, si tienes la fecha 15/01/2020 y quieres agrupar todas las fechas de enero en formato MM/AAAA (para crear gráficos o tablas), simplemente cambiar el formato a MM/AAAA no funciona: JMP seguirá interpretándola como la fecha original importada.
Dicho esto, las conversiones de fechas que más éxito he tenido para poder utilizarlas son:
- Para MM/AAAA desde Fecha, uso: Fecha DMY( 1, Mes( :FECHA_TRANSACCIÓN ), Año( :FECHA_TRANSACCIÓN ) ) con el formato MM/AAAA.
- Para YYYYQq desde Fecha, uso: Fecha DMY( 1, Piso( (Mes( :FECHA_TRANSACCIÓN ) - 1) / 3 ) * 3 + 1, Año( :FECHA_TRANSACCIÓN ) ) con el formato YYYYQq (es decir, 2020Q1).
Básicamente, ambas opciones toman todas las fechas de un mes determinado y las colocan en el primer día del mes o trimestre, respectivamente. Puede parecer una solución extraña, pero funciona para lo que necesitas en tabulación, series temporales, creación de gráficos, etc.