列からテキストを削除し、数値形式に変換するには、JSL で検索と置換をコード化するにはどうすればよいですか。JMP コミュニティの皆さん、こんにちは。
週に 1 回、バッテリー電圧列 (「V1」という名前) を含む .txt データをインポートします。行の値は「3.45V」、「3.34V」、「3.12V」、「3.23V」などになります。 検索と置換を手動で使用してデータから文字「V」を削除し、データ型を文字から数値に手動で変更します。 この単純なタスクのために動作する JSL を作成しようとして失敗したため、スクリプトに replace() または mumger() を含める方法がよく理解できていないのだと思います。
Re: 列からテキストを削除し、数値形式に変換するには、JSL で検索と置換をコード化するにはどうすればよいですか。コード内に論理エラーが見つかりました。以下は、値を適切に変換する小さなスクリプトを含むデータ テーブルの例です。
Names Default To Here( 1 );
dt = New Table( "Example",
add rows( 100 ),
New Column( "col1", character, formula( Char( Random Integer( 78, 100 ) ) || "V" ) ),
New Column( "col2", character, formula( Char( Random Integer( 78, 100 ) ) || "V" ) )
);
dt<<RUN formulas=""></RUN>
Re: 列からテキストを削除し、数値形式に変換するには、JSL で検索と置換をコード化するにはどうすればよいですか。こんにちは、ジム、あなたのコードは完全に機能しませんでしたが、その理由がわかりませんでした。 エラー メッセージを含む JMP のデバッガーのスクリーンショットと、この問題への取り組みを続けたい場合のデータのサブセットをアップロードしました。 この代替ソリューションに非常に興味があります。

Re: 列からテキストを削除し、数値形式に変換するには、JSL で検索と置換をコード化するにはどうすればよいですか。ありがとう、ダン、
これを次のようにワークフローに組み込むことができました。
Names Default To Here( 1 );
:Name( "V1" ) << Set Name( "orig V1" );
New Column( "V1",
Numeric,
"Continuous",
Format( "Fixed Dec", 6, 2 ),
Formula( Num( Word( 1, :orig V1, "V" ) ) )
);
素早い対応に感謝しています!
Re: 列からテキストを削除し、数値形式に変換するには、JSL で検索と置換をコード化するにはどうすればよいですか。このようなものが機能するかどうかを確認してください。完全にはテストされていませんが、ほぼ機能するはずです。
Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string, character );
For( theCol = 1, thecol <= N Items( colNames ), theCol++,
For( theRow = 1, theRow <= N Rows( dt ), theRow++,
If( Right( Column( dt, theCol )[theRow], 1 ) == "V",
Column( dt, theCol )[theRow] = Substr(
Column( dt, theCol )[theRow],
1,
Length( Column( dt, theCol )[theRow] ) - 1
)
)
)
);
If( Is Missing( Num( Column( dt, theCol )[1] ) ) == 0,
Column( dt, theCol ) << data type( numeric ) << modeling type( continuous )
);Re: 列からテキストを削除し、数値形式に変換するには、JSL で検索と置換をコード化するにはどうすればよいですか。私は常に、最初に対話的にソリューションを作成し、次にスクリプトを作成することの大ファンです。 いつもそれが可能ではないことはわかっていますが、それに近づくことはできます。
テキスト ファイルを開くと、JMP テーブルを含むソース スクリプトに次のスクリプトが表示されます (もちろん私の例です)。
Open(
"C:\Testing.txt",
columns( New Column( "V1", Character, "Nominal" ) ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Comma, CSV( 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( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
特定のケースに応じて必要に応じて変更できます。
次に、V を削除して数値に変換するために、2 番目の列を作成します。 これにより、何らかの理由で電圧フォーマットが変更された場合のエラーチェックが可能になります。 さらに、データの追跡可能性も向上します。 次の数式を使用して列を作成しました: Num( Word( 1, :V1, "V" ) )。 次に、テーブル パネルにある「テーブルのコピー スクリプト」を確認し、スクリプトの関連部分を取り出して新しい列を作成しました。
JSL では次のようになります。
New Column( "Numeric V1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Num( Word( 1, :V1, "V" ) ) )
)
この 2 つを組み合わせてスクリプトを作成する必要があります。