列の数値を失うことなく、列のデータ型を文字から数値に変換する方法親愛なる、
数週間前にJMPを始めました!! それは素朴な質問です。
列のデータ型を文字から数値に変換しようとしていますが、データ型を数値に変換しているときに、列からすべての数値が失われます。
同じものの添付のスクリーンショットを見つけてください。
データ型を文字から数値に変更するときに列の数値を保持するにはどうすればよいですか?
次のコマンドを使用して文字を置き換えてみました。
values1 = dt:RequiredColumn << Get Values;
Regex(:RequiredColumn、 "[^ 0-9]"、 ""、GLOBALREPLACE);
これにより、すべての数値も置き換えられます。
単純に、列の数値を保持したいと思います(元々は文字データ型)。 私たちのコミュニティでこの問題を検索しようとしましたが、それに関連する情報を得ることができませんでした。
Picture01-OriginalColumnFormat-列の元のデータ型のスクリーンショット
Picture02-ColumnafterChangingDatatype-データ型を数値に変更した後の列のスクリーンショット。
前もって感謝します...
データ表スクリプティングウィンドウズRe:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法あなたが望むことを達成するための複数の方法がありそうです、そして私は誰か(例えばジム)がそれをより効率的にするためのスクリプトを持っていると思います、しかしここに潜在的なワークフローがあります:
ところで、あなたのjpgでは、変更したい文字列がどのように見えるかを確認できません。 数値以外の文字がある場合は、データ型を変更する前にそれらを処理する必要があります。
1.列を右クリックして、[再コード化]を使用します。 数値以外の値をすべて削除します。
2.次に、右クリックして[列情報]を選択します。 (jpgのように)。データ型を文字から数値に、モデリング型を連続に変更します。
Re:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法JMPは、数値の適切な表現であるすべての値を変換する必要があります。したがって、
1.6.1、V1.6は有効な数値ではないため、欠落している値に変換する必要があります。
ただし、-1.00、5.00、および-15.000を変換する必要があります。
次のスクリプトを実行して、問題の原因となっている可能性のある非表示の文字がデータに含まれていないかどうかを確認してください。
show(:MeasuredValues[6],char to hex(:MeasuredValues[6]);
スクリプトは、データテーブルの6行目の値の16進値を表示します。-1.00が6行目にない場合は、6を、文字表現が有効な数値であるように見えるが、セルが欠落している値に変更されている行の1つの行番号に変更します。
MeasuredValues列のみを含むサンプルデータテーブルを添付できると非常に便利です。
Re:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法親愛なるスタットマン、
タイムリーな返信ありがとうございます。
列から[再コード化]オプションを使用して非数値を削除し、列のデータ型を文字から数値に変換して、提案を試みました。 ただし、データ型が数値に変更されると、以前と同様にすべての値が消えます。
同じものの添付のスクリーンショットを見つけてください。
再コーディングオプションでは、JMPは数値と文字列文字を区別することができました。
JIMさんの提案の結果をまもなく掲載します。
ありがとう..
Re:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法親愛なるジム。
数値に変換する前に6行目のスクリプトを実行しようとしましたが、結果は次のようになります。
:MeasuredValues [6] = "-1.00";
Char To Hex(:MeasuredValues [6])= "2D312E3030";
列のデータ型を数値に変換した後:
:MeasuredValues [6] =。;
Char To Hex(:MeasuredValues [6])= "FFFFD10000000000";
数値に変換されている(変換後に別の値に変更される)2番目の行のスクリプトを実行すると、結果は次のようになります。
変換前:
:MeasuredValues [2] = "1.6.1";
Char To Hex(:MeasuredValues [2])= "312E362E31";
変換後:
:MeasuredValues [2] = 3061584000;
Char To Hex(:MeasuredValues [2])= "41E6CF8210000000";
MeasuredValuesデータをテーブルに添付しました。
ありがとう !!
Re:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法持っているテーブルの変換は「簡単」ですが、一般的にこの種の変換はそうではありません。 考慮しなければならない非常に多くの異なる値があります。 次に、どのように問題/機能がありますJMPのNum関数が機能します。 以下は1つのアイデアですが、これでも、期間、日付、時間、パーセンテージ、千の区切り記号など、さまざまな「数値」形式が除外されます。 また、数字に関係のない可能性のある文字の一部のみを削除します
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))
));
Re:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法ありがとうjthi !!
それは仕事をしました...
Re:列の数値を失うことなく、列のデータ型を文字から数値に変換する方法JMPにはNum()関数にバグがあるようです。パターンの文字列
「nnn」
常にJMPの欠落値を返す必要がありますが、多くの場合、有効な数値を返します。
Num( "9.4.333" )
戻り値
-49554633600
この問題に関する使用上の注意は、JMPドキュメント(全数検索ではありません)にありません。JMPサポートチームにバグレポートを提出しています。