JSON Panda Splitの列データ型を設定する私は JSL を使用して、Panda Split 形式を使用する JSON ファイルをインポートしています。これを行うと、すべての列が Character としてインポートされますが、実際には、Character と Numeric の組み合わせである必要があります。それぞれを Numeric に変換する JSL スクリプトを作成できますが、これにより Character 列も変換され (そのデータが削除されます)。
JSL を使用して、データ型が文字か数値かを検出し、それに応じて変換できますか? または、インポート手順中にこれを行う方法はありますか? 特定のファイルの列は事前にわかりません。
18.1.1 の新機能
dt_cols = dt << Get Column Names();
For Each({col, i}, dt_cols,
Try(
// No warning, just converts everything.
As Column(dt, col) << Data Type("Numeric");
As Column(dt, col) << Modeling Type( "Continuous" );
);
);データアクセスウィンドウズRe: JSON Panda Split の列データ型の設定これをテストするための適切な例がありません (JMP は、すぐに取得した JSON の例ではクラッシュします) ので、JSON ウィザードでこれを行う方法があるかどうかをテストできません。
最初に列の値を確認し、それに応じて変換することで、数値だけを変換できます。
変換を実行する方法の1つは、最初に列の値をチェックし、問題がなければ変換することです。チェックできるオプションはいくつかあります。
- 最初の値を確認するだけ
- 最初と最後の値を確認する
- すべての値を確認する
- 値のランダムなサブセットをチェックする
最近はNum(<を使ってチェックしています列のデータ型を変更します。また、InFormat() を使用して「最適な」一致をチェックすることもできると思います (Num() よりも優れている可能性があります)。
Re: JSON Panda Split の列データ型の設定はい、うまくいきました。ありがとう、Jarmo。
Re: JSON Panda Split の列データ型の設定参考までに JSL 実装を次に示します。
rows_to_check_for_conversion = 100;
// Get column names.
dt_cols = dt << Get Column Names();
// Change data types.
For Each( {c, i}, dt_cols,
non_missing_rows = dt << Get Rows Where( !Is Missing( As Column( dt, c ) ) );
row_check = 0;
convert_to_number = 1;
While( row_check < rows_to_check_for_conversion & row_check < N Items( non_missing_rows ) & convert_to_number == 1,
row_check = row_check + 1;
r = non_missing_rows[row_check];
val = Num( dt:c[r] );
If( Is Missing( val ),
convert_to_number = 0
);
);
If( convert_to_number == 1,
As Column( dt, c ) << Data Type( "Numeric" );
As Column( dt, c ) << Modeling Type( "Continuous" );
);
);Re: JSON Panda Split の列データ型の設定行うとよい変更がいくつかあります。As Column() の代わりに Column() を使用し、Num() 呼び出しに << Restrict を追加するのが望ましいかどうかを確認します (私はこのようなバージョンの場合にこれを実行しました)。