如何在不丟失列中的數字值的情況下將列數據類型從字符轉換為數字親愛的,
幾週前開始使用 JMP !! 這是一個天真的問題。
我正在嘗試將列數據類型從字符轉換為數字,但是在將數據類型轉換為數字時我丟失了列中的所有數字值。
請找到相同的附加屏幕截圖。
當我將列的數據類型從字符更改為數字時,如何保留列中的數值?
嘗試使用以下命令替換字符,
values1 = dt:RequiredColumn<<獲取值;
正則表達式(:RequiredColumn, "[^0-9]", "", GLOBALREPLACE);
有了這個,所有的數值也被替換了。
只是我想保留列中的數值(最初是字符數據類型)。 嘗試在我們的社區中搜索此問題無法獲得任何相關信息。
Picture01 - OriginalColumnFormat - Column的原始數據類型截圖
Picture02 - ColumnafterChangingDatatype- 將數據類型更改為數值後的 Column 屏幕截圖。
提前致謝...
數據表腳本視窗回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值可能有多種方法可以完成您想要的事情,我敢打賭有人(例如 Jim)會有一個腳本來提高效率,但這裡有一個潛在的工作流程:
順便說一句,您的 jpg 不允許我們查看您想要更改的字符列的外觀。 如果有任何字符不是數字,則需要在更改數據類型之前處理這些字符。
1. 右鍵單擊列並使用重新編碼。 刪除所有非數字值。
2. 然後,右鍵單擊並選擇列信息。 (如jpg的)。將數據類型從字符更改為數字,將建模類型更改為連續。
回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值JMP 應轉換所有正確表示數值的值。所以,
1.6.1、V1.6 應轉換為缺失值,因為它們不是有效的數值。
但是,應轉換 -1.00、5.00 和 -15.000。
請您運行以下腳本以查看您的數據中是否存在可能導致問題的隱藏字符。
show(:MeasuredValues[6],char to hex(:MeasuredValues[6]);
該腳本將顯示數據表第 6 行中值的十六進制值。如果 -1.00 不在第 6 行中,則將 6 更改為其中字符表示似乎是有效數值但單元格正在更改為缺失值的行之一的行號。
如果您可以附加一個僅包含 MeasuredValues 列的示例數據表,這也將非常有用。
回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值親愛的斯塔曼,
感謝您的及時回复。
我確實通過使用列中的重新編碼選項刪除非數字值來嘗試您的建議,並嘗試將列數據類型從字符轉換為數字。 但是,當數據類型更改為數字時,所有值仍然像以前一樣消失。
請找到相同的附加屏幕截圖。
在重新編碼選項中,JMP 能夠區分數值和字符串字符。
很快就會公佈JIM先生的建議結果。
謝謝..
回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值親愛的吉姆。
在將其轉換為數字之前,我嘗試運行第 6 行號的腳本,結果是
:MeasuredValues[6] = "-1.00";
字符轉十六進制(:MeasuredValues[6]) = "2D312E3030";
將 Column 的數據類型轉換為 Numeric 後:
:MeasuredValues[6] = .;
字符到十六進制(:MeasuredValues [6])=“FFFFD10000000000”;
我為正在轉換為數值的第二行運行腳本(轉換後更改為不同的值),結果是
轉換前:
:MeasuredValues[2] = "1.6.1";
十六進製字符(:MeasuredValues[2]) = "312E362E31";
轉換後:
:MeasuredValues[2] = 3061584000;
十六進製字符(:MeasuredValues[2]) = "41E6CF8210000000";
我已附上帶有 MeasuredValues 數據的表格。
謝謝 !!
回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值轉換您擁有的表格是“容易的”,但通常這種轉換並非如此。 您必須考慮許多不同的值。 然後有一個問題/功能如何JMP 的 Num 函數有效。 下面是一個想法,但這仍然會遺漏許多不同的“數字”格式,如持續時間、日期、時間、百分比、千位分隔符等。 此外,它只刪除了一些與數字無關的可能字符
Names Default To Here(1);
dt = Current Data Table();
//remove alphabetical characters, should also remove some special characters
regex_one = "[a-zA-Z\s]";
dt << New Column("no_alph", Character, Nominal, << Set Each Value(
Regex(:MeasuredValues, regex_one, "", GLOBALREPLACE);
));
regex_two = "^-?[0-9]+\.?[0-9]*$";
dt << New Column("nums", Numeric, Nominal, << Set Each Value(
Num(Regex(:no_alph, regex_two))
));
回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值謝謝jthi!
那完成了工作...
回复:如何將列數據類型從字符轉換為數值而不丟失列中的數值JMP 似乎在 Num() 函數中存在錯誤。模式的字符串
“嗯”
應該總是返回一個 JMP 缺失值,但是在許多情況下,它會返回一個有效的數值
Num( "9.4.333" )
返回
-49554633600
我在 JMP 文檔(非詳盡搜索)中找不到有關此問題的任何使用說明。我正在向 JMP 支持團隊提交錯誤報告。