設定 JSON Panda Split 的資料列資料類型我正在使用 JSL 導入 Panda Split 格式的 JSON 檔案。當我這樣做時,所有列都作為字元導入,而實際上它們應該是字元和數字的組合。我可以編寫一個 JSL 腳本將每個列轉換為數字,但這也會轉換字元列(並刪除其資料)。
使用 JSL,我可以檢測資料類型應該是字元還是數字並進行相應的轉換嗎?或者有沒有辦法在導入步驟中執行此操作?我事先不知道特定文件的列。
JMP 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" );
);
);資料存取視窗回覆:設定 JSON Panda Split 的資料列資料型我沒有合適的範例來測試這一點(JMP 只是因為我很快得到的 JSON 範例而崩潰),所以我無法測試是否有辦法在 JSON 精靈中執行此操作。
您可以先檢查列中的值,然後相應地轉換它們,從而僅轉換數值。
執行轉換的一種方法是先檢查列的某些值,如果正常則進行轉換。您可以檢查的選項很少
- 只需檢查第一個值
- 檢查第一個和最後一個值
- 檢查所有值
- 檢查值的隨機子集
現在我會使用 Num(< 更改列的資料類型。我認為您也可以使用 InFormat() 來檢查“最佳”匹配(可能比 Num() 更好)。
回覆:設定 JSON Panda Split 的資料列資料型是的,這有效。謝謝賈莫。
回覆:設定 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" );
);
);回覆:設定 JSON Panda Split 的資料列資料型一些可能很好做的更改:使用Column() 而不是As Column() 並檢查是否將<< Restrict 添加到您的Num() 呼叫中是您想要做的事情(我已經為我的版本做了這樣的事情)。