將兩列的值合併為一列(混合數字和字元值)你好
我有兩列,一列包含數值,一列包含字串。
我想創建第三列,如果字串值是“參數”,則採用數值,如果不是,則採用字串值。
我嘗試了這個,但是我收到一個錯誤“列 TEST_RESULT 需要數字值”,儘管它被定義為字元類型列。
如果有必要的話我會使用 JMP15。
col_test_result =dt <
<NEW column=""></NEW>
Later on I want to split this column so the output table will have either numeric or character type data, will JMP be able to set it to numeric based<BR />on the contents although the source column was character?
<BR /><BR />
<LINGO-LABS id="lingo-labs-536312" slang="en-US" mode="UPDATE">
<LINGO-LABEL>進階統計建模</LINGO-LABEL>
<LINGO-LABEL>內容組織</LINGO-LABEL>
<LINGO-LABEL>資料混合與清理</LINGO-LABEL>
<LINGO-LABEL>大規模客製化</LINGO-LABEL>
<LINGO-LABEL>品質與工藝工程</LINGO-LABEL>
<LINGO-LABEL>分享和交流成果</LINGO-LABEL>
</LINGO-LABS>
回复:將 2 列中的值合併為一列(混合數字和字符值)您需要使用 Char() 函數將數字數據轉換為字符
col_test_result = dt << New Column( "TEST_RESULT", Character );
dt_subset:TEST_RESULT << set formula( If( :COMMENTS == "Parametric", Char( :NUMERIC_RESULT ), :COMMENTS ) );
回复:將 2 列中的值合併為一列(混合數字和字符值)不能在一列中包含混合值。 如果這些是數值,您可以在 :NUMERIC_RESULT 周圍添加 Char()
Column(dt_subset, "TEST_RESULT") << set formula(If(:COMMENTS == "Parametric", Char(:NUMERIC_RESULT), :COMMENTS));
當您拆分列時,只需將數據類型設置為您想要的。 請注意,如果您在數字列中有字符值,這些值將被更改為缺失。
回复:將 2 列中的值合併為一列(混合數字和字符值)謝謝 !添加 'char()' 解決了第一個問題。
但是現在 - 在拆分合併列後,我還有另外兩個問題。
我將其拆分為另一列,因此生成的列都有一種類型的數據(字符串或數字),大約有 150 個不同的列。
問題:
1.所有拆分列仍然使用合併列的原始公式。 如何使源列成為一個值(如在 excel 中 - 粘貼特殊值)。
2.所有的拆分列都是作為字符類型生成的,這不是我想要的,我希望它們根據它們的內容得到自動類型,就像
當我打開 csv 文件時 - JMP 會自動設置類型,因此如果列中的所有值都是數字,它將獲得數字類型。
回复:將 2 列中的值合併為一列(混合數字和字符值)這是一小段代碼,它將遍歷數據表並將由所有有效數值組成的任何字符列轉換為數字數據類型;
Names Default To Here( 1 );
dt = Current Data Table();
For Each( {value, index}, dt << get column names( string ),
If( Column( value ) << get data type == "Character",
vals = Column( value ) << get values;
nonMissing = Col Number( As Column( value ) );
Column( value ) << set data type( numeric ) << modeling type( continuous );
If( nonMissing != Col Number( As Column( value ) ),
Column( value ) << set data type( character ) << set values( vals )
);
)
);回复:將 2 列中的值合併為一列(混合數字和字符值)謝謝 !這看起來正是我需要的,但不幸的是它不起作用。
我試圖調試 - 第一行正在工作 - 獲取列名列表。
第二個得到以下錯誤。任何想法?

回复:將 2 列中的值合併為一列(混合數字和字符值)就像評論一樣:
這不是限制,而是 JMP 的基本思想是每列都有定義的數據類型,您可以根據需要主動設置。
數據類型一旦設置正確,就可以很容易地執行以下分析。
回复:將 2 列中的值合併為一列(混合數字和字符值)我認為您使用的是 < 版本 16,因此您必須使用 std "For" 語法,請參閱
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// JMP16 "For Each"
dt << get column names( string );
For Each( {value, index}, dt << get column names( string ), Print( value ) );
// JMP <16 "For"
col_lst = dt << get column names( string );
For( i = 1, i <= N Items( col_lst ), i++,
Print( col_lst[i] )
);
回复:將 2 列中的值合併為一列(混合數字和字符值)
謝謝它現在工作!
現在只有一件事 - 我如何擺脫原來的公式? 我只想要公式的結果值,有可能嗎?
回复:將 2 列中的值合併為一列(混合數字和字符值)
很好的工作.. 我發現了一個問題。 有一列具有 'char' 數據類型的列具有固定的字符串內容:“R001”
運行腳本後,它變為數字類型,值為“1”。 為什麼會這樣?
回复:將 2 列中的值合併為一列(混合數字和字符值)JMP 將後跟全數字值的 R 解釋為貨幣。南非蘭特符號的格式為:R123 或 R55.67 等。因此 JMP 將其解釋為數值。您可以在代碼中添加檢查以檢查此異常。
回复:將 2 列中的值合併為一列(混合數字和字符值)
哇,我沒有看到這個:)非常感謝你的幫助!
回复:將 2 列中的值合併為一列(混合數字和字符值)JMP 17 將為 num("R001", <<限制) 以防止這種行為。