各フィールドをどのように並べるか?txt ファイルがあります。JMP にインポートして分析したいのですが、一部の列が揃っていません。どうすれば揃えられますか?
区切られるのは、スペース、スペース、カンマです。しかし、「,」はスペースをテキストとして扱います。この問題をどうやって解決すればいいのでしょうか?

dtTlog = Open(
D,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, Space, CSV( 1 ), Comma ),
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( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
自動化とスクリプトウィンドウズRe: 各フィールドをどのように整列させるか?問題は、区切り文字としてスペースとカンマを使用していることです。列fには、カンマとスペースの区切り文字が並んでいる行があります。例は次のとおりです。
4, 7
列 C1c は 4 を読み取り、次に , を区切り文字として認識し、その後にスペースが 2 番目の区切り文字として続きます。したがって、最初の区切り文字と 2 番目の区切り文字の後に値が見つからなかったので、列 f に欠損値が適用され、7 が列 C2c の値になります。
以下は、すべてのデータを読み込み、すべてのカンマを削除し、それを一時領域に保存し、入力ストリームを使用して再度読み込むスクリプトです。
names default to here(1);
d= "<YOUR path="" and="" file="" name="">";
dt = Open(
D ,
columns( New Column( "c000001", Character, "Nominal" ) ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( CSV( 0 ) ),
Treat Leading Zeros as Character( 1 ),
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( 0 ),
Column Names Start( 0 ),
First Named Column( 0 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
for each row(:c000001 = Trim(substitute(:c000001,","," ")));
dt << save ("$TEMP\interium file.txt");
dtTlog = Open(
"$TEMP\interium file.txt",
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, Space, CSV( 1 ), Comma ),
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( 2 ),
Data Starts( 3 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
); </YOUR>

Re: 各フィールドをどのように整列させるか?
わかりました。あなたの提案は理解しました。しかし、それは私に上記の警告を与えます。
Re: 各フィールドをどのように整列させるか? For Each( {col},
dt << Get Column Reference( dt << Get Column Names( Character ) ),
If( !Is Empty( col << Get Formula ),
Continue()
);
For Each Row( dt, col[] = Substitute( col[], ",", " ", <<IGNORECASE></IGNORECASE>I replace that line with these code. It's working now. Thanks.
Re: 各フィールドをどのように整列させるか?元のコードに少し誤りがありました。戻って修正しました。コピーして動作するか確認してください。修正は適切でしたが、元のコードでは各列を個別に読み込んでいません。各行のすべてのデータを 1 つの列として読み込み、1 つの列のみのデータ テーブルという観点から処理します。
Re: 各フィールドをどのように整列させるか?あるいは、テキストファイルの読み込みを使用してファイルをテキストとして開き、置換によってカンマを削除し、最後にテキストをデータテーブルに開くこともできます。
元の投稿:
.csv インポート エラー/ @Craige_Hales
ファイルのインポート: NAN を指定しますか? / @jthi
txtfile = Load Text File("$DOWNLOADS/log - question2.txt");
substituteinto(txtfile,","," ");
Open(
Char to Blob(txtfile),
Import Settings(
End Of Field( Spaces, Space ),
)
);
Re: 各フィールドをどのように整列させるか?テキストを列に分割: 欠落データを正しく処理する
「正しく」?
あなたのタスクでは、テキストを列に変換するのが効果的です。
dt = Open(
"$DOWNLOADS/log - question2.txt",
Import Settings(
End Of Field( Tab ),
Labels( 0 )
)
);
// split columns via Text to columns
dt << Text to Columns( columns( :c000001 ), Delimiters( " ", "," ));
dt << Delete Columns( :c000001);
// Move column names up
dt << Move up;