Tengo dos fuentes de datos que necesito reunir y crear una tabla maestra para análisis e informes.
Uno está en formato .csv (Resultado 1) y otro en formato .xlsx (Resultado 2). El archivo en formato .xlsx necesito especificar la configuración de la hoja de trabajo individual y qué hoja abrir al importar. He visto las siguientes publicaciones pero no he logrado que funcione:
https://community.jmp.com/t5/JMP-Scripts/Combine-multiple-txt-or-csv-files/ta-p/24083
https://community.jmp.com/t5/Discussions/How-do-I-get-the-import-file-settings-right-before-concatenating/mp/39286#M22977
En los Resultados 1, necesito especificar las columnas 1 a 3. En los Resultados 2, necesito especificar las columnas 1 a 16 y las filas 6 a 7 en la hoja de Protocolo. Además, después de importar los Resultados 2, tendré que transponer desde la columna 3 hasta la columna n (n significa que no está vacío), transponiéndolo en la columna 1.
Luego tendré que unir las tablas resultantes en función de las columnas coincidentes.
¿Alguien podría proporcionar un script para esto o dar algunos ejemplos para que pueda resolverlo yo mismo?
Gracias
Creo que la mejor manera de comenzar con JSL es mediante el script que genera JMP cuando utiliza la interfaz de apuntar y hacer clic.
Comencemos con la importación de Resultados 1. Todo lo que debe hacer es abrirlo (Archivo > Abrir) y la tabla JMP resultante tendrá un script de "fuente". Haga clic con el botón derecho en esto y Editar para obtener el script que llevará a cabo esta importación. (No se preocupe por las columnas adicionales que no necesita; puede especificar las que necesita cuando se une a las tablas más adelante). Su secuencia de comandos debería tener este aspecto, pero con la ruta completa del archivo en lugar de "C:\.. .".
Open(
"C:\...",
columns(
New Column( "Sample", Character, "Nominal" ),
New Column( "Hour", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Average", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Minimum", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Maximum", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 1 ) ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
Para el archivo de Excel se puede utilizar el asistente de importación de Excel . Puede especificar la hoja de trabajo y los números de fila donde comienzan y terminan los datos. Nuevamente, puede obtener el script de origen de la tabla JMP resultante.
Open(
"C:\...",
Worksheets( "Protocol" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 2 ),
Headers Start on Row( 1 ),
Data Starts on Row( 9 ),
Data Starts on Column( 1 ),
Data Ends on Row( 10 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
Si junta estos scripts, tendrá un script que importa ambas tablas a JMP, lo cual es un buen comienzo. Una cosa que debe saber es que debe agregar un punto y coma, ";", al final de cada acción cuando tiene una secuencia de acciones en un script.
Otra cosa que deberá saber es que desea crear referencias para sus tablas de datos en su secuencia de comandos. Puede dar a cada tabla una referencia como dt1, dt2 ...
En este siguiente fragmento de secuencia de comandos, he modificado la importación Results1 para dar a la tabla resultante una referencia, dt1, y he agregado un punto y coma al final para que funcione cuando agregue la secuencia de comandos para la siguiente acción más adelante.
dt1 = Open(
"C:\...",
columns(
New Column( "Sample", Character, "Nominal" ),
New Column( "Hour", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Average", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Minimum", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "Maximum", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 1 ) ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
Obviamente, hay más que hacer aquí para obtener su solución, pero espero que eso ayude como punto de partida.
phil