3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?JMP 14.2.0 では、3 桁のバージョン番号値を含む列を含む CSV ファイルを読み取る (または「開く」) と、それらの値が日付として解釈されます。 たとえば、verTest.csv に次の内容が含まれているとします。
Product,Station,Version,Date
Widget,Audio-Test,2.2.2044,3/2/19
Widget,RF-Test,2.2.2045,3/2/20
すべての列値は、日付として読み取られるバージョン値 (例: 2/2/2044 および 2/2/2045) を除き、数値データ型、連続モデリング型、および m/d/y を使用して期待どおりに解釈されます。フォーマット。 2 桁と 4 桁のバージョン番号は、文字列として読み取られることがわかりました。
さらに複雑なのは、どの列にこの形式が含まれるかが事前にわからないため、事前に列の型を明示的に設定できないことです (また、開く前に列の型を設定できるかどうかも明らかではありません)。 CSV ファイル)。 そして、後で列の型を手動で変更しようとすると、「/」文字が焼き付けられ、型を Character に変更すると値が「2/2/2044」という文字列のままになるようです。
3 桁のバージョン番号が文字列、名目などの文字列として読み込まれるように、この解釈を禁止する方法はありますか (m/d/y などの従来の形式を使用した日付の解釈方法に影響を与えることなく)。
Re: 3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?...このように日付を使用できます
<<SET date="" filter=""></SET>
<<CreateWindow with pre-populated date range<<CreateWindow with pre-populated date range<<事前に入力された日付範囲を使用してウィンドウを作成します
Re: 3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?それが役に立ってうれしいです!
この構文は 3 つの目的を果たします。1 つは事前設定された値でダイアログを再起動する場合にダイアログの完全な状態を記憶すること、インポートを実行すること、そして可能性を示すことです。 フィルターはそれらすべての例です。
<<SET name="" filter=""></SET>
それをダイアログと比較すると、
using <<CreateWindow instead of <<ImportDatausing <<CreateWindow instead of <<ImportData<<
ダイアログには、フィルターを有効または無効にするチェック ボックスがあります。 上では、名前フィルターが有効になっており、サイズ フィルターと日付フィルターは使用されていません。 サイズ フィルタと日付フィルタの値は、(1) 最後に実験した値、または (2) 選択したファイルのサイズ範囲と日付範囲のいずれかです。 最も可能性が高いのは (2) です。 したがって、ファイルの長さはおそらく 100 バイトです。 数値は JMP の日時値であり、asdate( のようなものを使用できます。 3666002110.40841 ) 取得するため
2020年3月2日:13:55:10
これらの行と (おそらく) 他の多くの行をスクリプトから削除できます。これらのほとんどは、MFI の使用方法を示すデフォルト値です。
最後に、スクリプトが実際に行っていること: MFI(...) 関数はオブジェクトを返します。 <<データのインポート最後のメソッドは、実際にデータをインポートするようにオブジェクトに指示します。 Scripting Index には << を示す例があります。ウィンドウの作成別の方法として。 MFI オブジェクトはすぐに使用され、<< で破棄されます。データのインポート場合。 << でウィンドウの作成この場合、MFI オブジェクトはウィンドウが閉じるまで破棄されません。 xyz = MultipleFileImport(...); を使用することもできます。メッセージを変数 xyz に送信します (データのインポートそしてウィンドウの作成);変数がクリアされるまでオブジェクトは破棄されません。 ShowProperties(xyz) はログ ウィンドウにメッセージをリストします。スクリプトでも使用されています。
Re: 3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?こんにちは@Craige_Hales 、
ご提案ありがとうございます! 実装しました複数ファイルのインポートそしてそれを徹底的にテストしてきました。問題は見つからず、3 桁の数字が表示されていますバージョン列 (および同様の列) では区切り文字はそのままですが、日付は正しく読み込まれます。
マニュアルによって作成されたソースから複数ファイルのインポート, 私は次のことを受け取りました。
Multiple File Import(
<<SET folder=""></SET>
それをインポート関数に統合するには (これはパスパラメータとして)、最初の 2 つのメソッドを正しく設定するだけで済みました。
Convert_csv_to_jmp = Function( {path},
:
:
// determine folder and file args for Multiple File Import function.
lastSlash = Contains( path, "/", -1 );
dir = Substr( path, 1, lastSlash );
If( Length(dir) == 0,
dir = "./";
);
file = Substr( path, lastSlash+1 );
Write( "Path: ", dir, "\!nFile: ", file, "\!n" );
Multiple File Import(
<<SET folder=""></SET>コミュニティの誰かがこの機能に関する優れたドキュメントにリンクしてくれれば幸いです。 すべてのメソッドが何をしているのかを理解したいと思います。 例えば、日付フィルターの設定どうやら非常に難解な議論を求めているようだ。
Re: 3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?複数ファイルのインポートを使用します。 日付形式を推測しようとしません。 選択したファイルが 1 つだけの場合は一度に 1 つのファイルをインポートしますが、実際にはフォルダーから類似したファイルを多数インポートすることを目的としています。 プロセスを繰り返す必要がある場合は、手動インポートのソース スクリプトを確認してください。
Re: 3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?こんにちは、キャメロン
ご返答ありがとうございます。 あなたの提案に従って、最後のインポート画面で、赤い矢印の左側にあるアイコンをクリックして、数値データ列から文字データ列に変更することができました。 これで、希望どおりにデータがインポートされました。

このソースは次のとおりです。
Open(
"<SPAN>/Users/st/src/analysis_jmp/</SPAN>testVer.csv",
columns(
New Column( "Product", Character, "Nominal" ),
New Column( "Station", Character, "Nominal" ),
New Column( "Version", Character, "Nominal" ),
New Column( "Date",
Numeric,
"Continuous",
Format( "m/d/y", 10 ),
Input Format( "m/d/y" )
)
),
これは次のことを示していますCSV ファイルを開く前に列のタイプを設定することができます。 ただし、JSL スクリプト内の Version 列だけをターゲットにすると、事態がおかしくなります (JSL のバグかも??)。
私のスクリプト:</CODE></P><P> </P><PRE><CODE class=" language-jsl">path = "./verTest.csv";<BR />dt = Open(
path,
columns(
New Column( "Version", Character, "Nominal" )
),
結果のソース:
Open(
"/Users/st/src/analysis_jmp/verTest.csv",
columns(<BR /> New Column( "Product", Character, "Nominal" )<BR /> ),
したがって、インポーターは新しい列の仕様内の名前を無視し、単にファイル内での出現順にそれらを取得しているように見えます ('Product' が最初です。同様の結果を持つ 2 番目の新しい列を追加したため、この仮説が強化されました)。 。
たとえこれが機能したとしても、インポート前に列の名前を知っていたと想定されます (私は知りません)。 場合によってはそうするので、少なくともこのロジックを(機能すると仮定して)それらに適用できます。しかし、最終的にはそのうちのいくつかを恋しく思うことになります。
私は、日付の一般的な解釈方法を制限または制約するインポート オプションがあるかもしれないと期待していました (たとえば、「.」文字が m/d/y 区切り文字として考慮されないように)。
Re: 3 桁のバージョン番号が日付としてデータ テーブルに読み取られるのを防ぐにはどうすればよいですか?こんにちは@スティーブテリー、
JMP で .csv を開くと、ナビゲーション ウィンドウにいくつかのオプションが表示されるはずです (少なくとも Windows の場合)。私はMacを持っていません)。[データ (プレビューを使用)] を選択すると、インポートされた列の形式を手動で設定できます。Windows では次のようになります。

「開く」をクリックすると、インポートのパラメータを設定するための一連のダイアログ画面が表示されます。2 番目の画面で、プレビューの上部で変更したいヘッダーの横をクリックし、その列が文字列としてインポートされていることを確認します。好みの方法でインポートしたら、テーブルからソース スクリプトをコピーするだけで、後でそれを再利用してインポートを自動化できます。