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 d'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, les informations non pertinentes mentionnées ci-dessus le font être détecté comme « nominal ».
AnalytiqueTableau de donnéesScriptRe : Importer plusieurs fichiers CSV avec le même formatMerci Jim.
Votre solution m'a fait gagner beaucoup de temps.
Re : Importer 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 d'eux, 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 correspondant à votre entrée.mais il devrait être proche, et vous devriez être capable de 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 cela fera le travail