¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Hola a todos.
En JMP, trabajo con datos de estabilidad extraídos de un sistema LIMS. Al hacer el análisis, tendría tiempo en meses en el eje X. Los datos extraídos vienen en dos "formatos" de tiempo: ya sea como tiempo dado en meses (por ejemplo, "M-12" o "M-36") o como tiempo dado en días (por ejemplo, "EOS-968" o "EOS-1011" ). Todos los datos se encuentran en la misma columna.
Necesito que los datos continúen para poder hacer el análisis requerido. Con respecto al tiempo en meses, normalmente solo elimino la "M-" haciendo una "búsqueda y reemplazo" y dejo reemplazar vacío. Es más trabajo cambiar los días en meses.
Mi propio pensamiento inicial fue eliminar primero la parte "EOS-", luego volver a calcular en meses, pero dado que todos los datos están ubicados en la misma columna, me resulta difícil mantener los dos "conjuntos de datos" separados hasta que tengan el misma unidad.
¿Tendrías alguna buena idea sobre cómo puedo hacer esta transformación más fácilmente? ¿Quizás se requiere un pequeño script?
Cualquier ayuda es muy apreciada.
Atentamente
Enriqueta
Tabla de datosRe: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Hola Dale.
Muchas gracias por su ayuda.
BR Enriqueta
Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Hola Jarmo.
Eso funcionó perfectamente. Muchas gracias por su ayuda.
BR Enriqueta
Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Veo otras ideas similares, adjunto es mío (sin scripting).
Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?No es necesario almacenarlo en una variable.
Ejemplo a continuación. Ejecute el script y verifique la fórmula para MonthNumber:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
New Column("Time", Character, "Nominal", Set Values({"M-12", "M-36", "EOS-968", "EOS-1011"}))
);
dt << New Column("MonthNumber", Numeric, Continuous, Formula(
If(StartsWith(:Time, "M"),
Num(Word(2, :Time, "-"))
,
StartsWith(:Time, "EOS"),
Num(Word(2, :Time, "-"))/30
,
. //if starts with something else than "M" or "EOS"
);
));
A continuación, puede modificar la fórmula según sea necesario.
Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Hola.
Muchas gracias por su ayuda. Soy totalmente nuevo en las secuencias de comandos JMP, por lo que tal vez pueda indicarme la dirección correcta para hacer las lógicas que faltan.
Para la "lógica del mes", solo quiero eliminar la parte "M-", así que creo que la función de Word de la respuesta de Dales debería funcionar.
Para la "lógica de días", quiero eliminar la parte "EOS-" (usando la función de Word) y luego calcular la parte numérica de días a meses. Tal vez una pregunta estúpida, pero ¿puedo simplemente agregar dos líneas de codificación o necesito almacenarlas en una variable de alguna manera?
Gracias 
Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Hola Dale. Gracias por su ayuda. Por lo que puedo ver, usar la función de Word como se describe me dará una columna de datos continuos (sí), pero en dos unidades diferentes (días y meses).
¿Alguna idea sobre cómo puedo volver a calcular los días en meses, pero solo haciendo esto para las filas donde el valor numérico está en días?
BR Enriqueta
Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?Además de usar Word(), puede usar la declaración Empieza por y Si para determinar cómo debe calcular el mes.
Este script a continuación agregará valores de marcador de posición 1 (mes) y 2 (día). Reemplácelos con su lógica para el cálculo del mes
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
New Column("Time", Character, "Nominal", Set Selected, Set Values({"M-12", "M-36", "EOS-968", "EOS-1011"}))
);
dt << New Column("MonthNumber", Numeric, Continuous, Formula(
If(StartsWith(:Time, "M"),
//month logic here
1
,
StartsWith(:Time, "EOS"),
//day logic here
2
,
. //if starts with something else than "M" or "EOS"
);
));

Re: ¿Cómo transformo una columna de datos de tiempo (nominal) en datos continuos en una unidad (meses)?La función "palabra" parece funcionar; consulte el archivo de ejemplo adjunto.