Importar varios archivos csv con el mismo formatoTengo varios archivos csv con formato similar. Todos los archivos csv tienen encabezado en la fila no. 279 y los datos comienzan en la fila 281. Aunque la longitud de los datos puede variar, las últimas 4 filas de todos los archivos csv tienen información irrelevante y deben eliminarse.
Actualmente, estoy usando la funcionalidad 'Importación de archivos múltiples' para importar los datos, pero no sé cómo excluir las últimas 4 filas. Me deshago de las filas después de importar en la tabla JMP. ¿Es posible crear un script para importar automáticamente todos los archivos csv en un directorio y concatenarlos excluyendo las últimas 4 filas? El siguiente script es el que obtengo cuando importo un solo archivo csv.
Open("C:\Users\TEST\ABC.csv",
columns(
New Column( "Record", Character, "Nominal" ),
New Column( "14", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "ID", Character, "Nominal" ),
New Column( "XREL", Character, "Nominal" ),
New Column( "YREL", Character, "Nominal" ),
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Space, Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
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( 279 ),
Data Starts( 281 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)En realidad, todas las columnas contienen valores numéricos en formato continuo. Pero, la información irrelevante antes mencionada hace que se detecte como 'nominal'.
AnalíticaTabla de datosScriptingRe: importar varios archivos csv con el mismo formatoAquí hay una modificación a su código que encuentra todos los archivos en un directorio dado, abre cada uno, elimina las últimas cuatro filas y luego lo agrega a un archivo de concatenación.
El código no está completamente probado, ya que no tengo archivos que coincidan con su entrada.pero debería estar cerca, y debería poder solucionar cualquier problema menor que tenga.
Names Default To Here( 1 );
dirFiles = Files In Directory( "C:\Users\TEST" );
// Create the output data table to concatenate all files to
dtFinal = New Table( "Final", New Column( "Source", character ) );
For( i = 1, i <= N Items( dirFiles ), i++,
dt = Open(
"C:\Users\TEST\" || dirFiles[i],
columns(
New Column( "Record", Character, "Nominal" ),
New Column( "14", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "ID", Character, "Nominal" ),
New Column( "XREL", Character, "Nominal" ),
New Column( "YREL", Character, "Nominal" ),
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Space, Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
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( 279 ),
Data Starts( 281 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
// Delete the last 4 rows
dt << delete rows( Index( N Rows( dt ) - 4, N Rows( dt ) ) );
// Add a source column
dt << New Column( "Source", character, set each value( dirFiles[i] ) );
// Concatenate the file
dtFinal << concatenate( dt, Append to first table( 1 ) );
// delete the current input table
Close( dt, nosave );
);
Esto se ejecutará más lento que la importación de varios archivos, pero hará el trabajo