Importation de plusieurs fichiers csv avec le même formatJ'ai plusieurs fichiers csv avec un format similaire. Tous les fichiers csv ont un en-tête sur la ligne no. 279 & les données commencent à partir de la ligne n° 281. Même si la longueur des données peut varier, les 4 dernières lignes de tous les fichiers csv contiennent des informations non pertinentes et doivent être supprimées.
Actuellement, j'utilise la fonctionnalité « Importation de fichiers multiples » pour importer les données, mais je ne sais pas comment exclure les 4 dernières lignes. Je me débarrasse des lignes après avoir importé dans la table JMP. Est-il possible de créer un script pour importer automatiquement tous les fichiers csv sur un répertoire et les concaténer en excluant les 4 dernières lignes. Le script ci-dessous est celui que j'obtiens lorsque j'importe un seul fichier 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 fait, toutes les colonnes contiennent des valeurs numériques au format continu. Mais, l'information non pertinente mentionnée ci-dessus fait qu'elle est détectée comme «nominale».
AnalytiqueTableau de donnéesScriptRe: Importation de plusieurs fichiers csv avec le même formatVoici une modification de votre code qui trouve tous les fichiers dans un répertoire donné, ouvre chacun, supprime les quatre dernières lignes, puis l'ajoute à un fichier de concaténation.
Le code n'est pas entièrement testé, car je n'ai pas de fichiers qui correspondent à votre entrée.mais il devrait être proche et vous devriez pouvoir résoudre tous les problèmes mineurs qu'il a.
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 );
);
Cela fonctionnera plus lentement que l'importation de fichiers multiples, mais le travail sera fait
Re : Importer plusieurs fichiers CSV avec le même formatMerci Jim.
Votre solution m'a fait gagner beaucoup de temps.