¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?En JMP 14.2.0, cuando leo (o abro) un archivo CSV que contiene una columna con valores de número de versión de 3 dígitos, esos valores se interpretan como una fecha. Por ejemplo, si verTest.csv contiene:
Product,Station,Version,Date
Widget,Audio-Test,2.2.2044,3/2/19
Widget,RF-Test,2.2.2045,3/2/20
Todos los valores de las columnas se interpretan como se esperaba, excepto los valores de la versión que se leen como fechas, por ejemplo, 2/2/2044 y 2/2/2045, con tipo de datos numérico, tipo de modelado continuo y con m/d/y. formato. Encuentro que los números de versión de 2 y 4 dígitos se leen bien, es decir, como cadenas de caracteres.
Una complicación adicional es que no sé de antemano qué columnas podrían contener este formato, por lo que no puedo configurar explícitamente los tipos de columnas con anticipación (tampoco está claro que sea posible configurar los tipos de columnas antes de abrir un archivo CSV). Y si intento cambiar manualmente los tipos de columnas después del hecho, parece que los caracteres '/' están integrados de manera que cambiar el tipo a Carácter deja el valor con una cadena "2/2/2044".
¿Hay alguna manera de inhibir esta interpretación para que los números de versión de 3 dígitos se lean como cadenas, es decir, Carácter, Nominal (y sin afectar la forma en que se interpretan las fechas usando los formatos tradicionales como m/d/y)?
Re: ¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?...y puedes usar fechas como esta
<<SET date="" filter=""></SET>
<<CreateWindow with pre-populated date range<<CreateWindow with pre-populated date range<
Re: ¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?¡Me alegra que esté funcionando para ti!
La sintaxis tiene tres propósitos: recordar el estado completo del cuadro de diálogo si desea volver a iniciarlo con valores precargados, ejecutar la importación y mostrar las posibilidades. Los filtros son un ejemplo de todos ellos:
<<SET name="" filter=""></SET>
Comparando eso con el diálogo,
using <<CreateWindow instead of <<ImportDatausing <<CreateWindow instead of <<ImportDatausando <<
Hay casillas de verificación en el cuadro de diálogo que habilitan y deshabilitan el filtro. Arriba, el filtro de nombre está habilitado y los filtros de tamaño y fecha no están en uso. Los valores en los filtros de tamaño y fecha son (1) los últimos valores con los que experimentó o (2) el rango de tamaño y fecha del archivo que seleccionó. Lo más probable (2). Entonces su archivo probablemente tenga una longitud de 100 bytes. El número es un valor de fecha y hora JMP, puedes usar algo como asdate( 3666002110.40841 ) Llegar
02mar2020:13:55:10
Puedes eliminar esas líneas y (probablemente) muchas otras del script; en su mayoría son valores predeterminados que muestran cómo utilizar MFI.
Finalmente, lo que realmente hace el script: la función MFI(...) devuelve un objeto. El << Datos de importacion El método al final le dice al objeto que realmente importe los datos. Hay un ejemplo en el índice de secuencias de comandos que muestra << Crear ventana como otro método. El objeto MFI se utiliza inmediatamente y luego se destruye en el << Datos de importacion caso. En el << Crear ventana En caso de que el objeto MFI no se destruya hasta que se cierre la ventana. También puedes usar xyz = MultipleFileImport(...); y enviar mensajes a la variable xyz (incluyendo Datos de importacion y Crear ventana ); el objeto no será destruido hasta que se borre la variable. ShowProperties(xyz) enumerará los mensajes en la ventana de registro; también se utilizan en el guión.
Re: ¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?Hola @Craige_Hales ,
¡Muchas gracias por la sugerencia! yo implementé Importación de múltiples archivos y lo he estado probando intensamente; No puedo encontrar ningún problema y se lee en mi número de 3 dígitos. Versión columna (y otras similares) con los delimitadores intactos, pero aún lee las fechas correctamente.
De la fuente producida por el manual. Importación de múltiples archivos , obtuve lo siguiente:
Multiple File Import(
<<SET folder=""></SET>
Para integrar eso en mi función de importación (que toma el camino como parámetro), solo tuve que completar correctamente los dos primeros métodos:
Convert_csv_to_jmp = Function( {path},
:
:
// determine folder and file args for Multiple File Import function.
lastSlash = Contains( path, "/", -1 );
dir = Substr( path, 1, lastSlash );
If( Length(dir) == 0,
dir = "./";
);
file = Substr( path, lastSlash+1 );
Write( "Path: ", dir, "\!nFile: ", file, "\!n" );
Multiple File Import(
<<SET folder=""></SET>Agradecería que alguien de la comunidad pudiera vincular alguna buena documentación sobre esta función. Me gustaría entender qué están haciendo todos los métodos. Por ejemplo, Establecer filtro de fecha Parece querer algunos argumentos muy arcanos.
Re: ¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?Utilice la importación de múltiples archivos. No intentará adivinar los formatos de fecha. Importará un archivo a la vez si eso es todo lo que selecciona, pero en realidad está dirigido a importar un montón de archivos similares desde una carpeta. Mire el script fuente de una importación manual si necesita repetir el proceso.
Re: ¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?Hola cameron,
Gracias por su respuesta. Según su sugerencia, en la última pantalla de importación, pude hacer clic en el ícono a la izquierda de la flecha roja para cambiarlo de una columna de datos numéricos a una columna de datos de caracteres. Con eso, importó los datos como yo quería.

La fuente de esto me dio lo siguiente:
Open(
"<SPAN>/Users/st/src/analysis_jmp/</SPAN>testVer.csv",
columns(
New Column( "Product", Character, "Nominal" ),
New Column( "Station", Character, "Nominal" ),
New Column( "Version", Character, "Nominal" ),
New Column( "Date",
Numeric,
"Continuous",
Format( "m/d/y", 10 ),
Input Format( "m/d/y" )
)
),
Esto indica que Es posible configurar los tipos de columnas antes de abrir un archivo CSV. Sin embargo, cuando apunto solo a la columna Versión dentro de mi script JSL, las cosas se vuelven locas (¿¿error JSL tal vez??).
Mi guión:</CODE></P><P> </P><PRE><CODE class=" language-jsl">path = "./verTest.csv";<BR />dt = Open(
path,
columns(
New Column( "Version", Character, "Nominal" )
),
Fuente resultante:
Open(
"/Users/st/src/analysis_jmp/verTest.csv",
columns(<BR /> New Column( "Product", Character, "Nominal" )<BR /> ),
Por lo tanto, parece que el importador ignora el nombre en la especificación de Nueva columna y simplemente los toma en orden de aparición en el archivo (siendo 'Producto' el primero; agregué una segunda Nueva columna con resultados similares, fortaleciendo así esta hipótesis). .
Incluso si esto funcionara, se supondría que conocía el nombre de la columna antes de la importación (lo cual no es así). En algunos casos lo hago, así que al menos podría aplicar esta lógica (suponiendo que funcione) para esos; pero eventualmente extrañaría algunos de ellos.
Esperaba que pudiera haber una opción de importación que limitara o restringiera la forma en que se interpretan las fechas en general (de modo que los caracteres '.' no se consideren como delimitadores m/d/y, por ejemplo).
Re: ¿Cómo puedo evitar que los números de versión de 3 dígitos se lean como fechas en la tabla de datos?Hola @SteveTerry ,
Cuando abre el .csv desde JMP, debería tener algunas opciones en la ventana de navegación (al menos para Windows.No tengo una Mac).Elija Datos (usando vista previa) y tendrá la oportunidad de configurar manualmente los formatos para las columnas importadas.Así es como se ve en Windows:

Al hacer clic en Abrir, aparecerá una serie de pantallas de diálogo para configurar los parámetros para la importación.En la segunda pantalla, puede hacer clic en la parte superior de la vista previa junto al encabezado que desea cambiar y asegurarse de que esa columna se importe como una columna de caracteres.Una vez que lo importe como desee, puede simplemente copiar el script fuente de la tabla y reutilizarlo en el futuro para automatizar la importación.