Importazione di più file CSV con lo stesso formatoHo diversi file CSV con formato simile. Tutti i file CSV hanno un'intestazione sulla riga n. 279 e i dati iniziano dalla riga n. 281. Anche se la lunghezza dei dati può variare, le ultime 4 righe su tutti i file CSV contengono informazioni irrilevanti e devono essere eliminate.
Attualmente, sto utilizzando la funzionalità "Importazione di più file" per importare i dati, ma non so come escludere le ultime 4 righe. Elimino le righe dopo aver importato nella tabella JMP. E' possibile creare uno script per importare automaticamente tutti i file csv su una directory e concatenarli escludendo le ultime 4 righe. Lo script seguente è quello che ottengo quando importo un singolo file 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" )
)
)In realtà tutte le colonne contengono valori numerici in formato continuo. Ma, l'informazione irrilevante di cui sopra fa sì che venga rilevata come 'nominale'.
AnalisiTabella datiScriptingRe: Importare più file CSV con lo stesso formatoEcco una modifica al codice che trova tutti i file in una determinata directory, li apre ciascuno, elimina le ultime quattro righe e quindi lo aggiunge a un file di concatenazione.
Il codice non è completamente testato, poiché non ho file che corrispondono al tuo input.ma dovrebbe essere vicino e dovresti essere in grado di risolvere eventuali problemi minori che ha.
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 );
);
Questo funzionerà più lentamente rispetto all'importazione di più file, ma porterà a termine il lavoro
Re: Importazione di più file CSV con lo stesso formatoGrazie Jim.
La tua soluzione mi ha fatto risparmiare un sacco di tempo.