同じ形式で複数のcsvファイルをインポートする同様の形式のcsvファイルがいくつかあります。 すべてのcsvファイルの行番号にヘッダーがあります。 279&データは行番号281から始まります。 データの長さは異なる場合がありますが、すべてのcsvファイルの最後の4行には無関係な情報が含まれているため、削除する必要があります。
現在、「複数ファイルのインポート」機能を使用してデータをインポートしています。しかし、最後の4行を除外する方法がわかりません。 JMPテーブルにインポートした後、行を削除します。 ディレクトリ上のすべてのcsvファイルを自動的にインポートし、最後の4行を除外してそれらを連結するスクリプトを作成することは可能ですか? 以下のスクリプトは、単一の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" )
)
)実際には、すべての列に連続形式の数値が含まれています。 ただし、上記の無関係な情報により、「公称」として検出されます。
分析データ表スクリプティング再:同じ形式で複数のcsvファイルをインポートするこれは、指定されたディレクトリ内のすべてのファイルを検索し、各ファイルを開き、最後の4行を削除してから、それを連結ファイルに追加するコードの変更です。
入力に一致するファイルがないため、コードは完全にはテストされていません。しかし、それは近くにあるはずであり、あなたはそれが持っているどんな小さな問題でも取り組むことができるはずです。
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 );
);
これは、複数ファイルのインポートよりも実行速度が遅くなりますが、作業は完了します
Re:同じ形式の複数のcsvファイルをインポートするジムに感謝します。
あなたの解決策は私に多くの時間を節約しました。