確定列是否存在<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一個 JMP 腳本,它創建一個包含公式的新列。 我試圖找出如何檢測該列是否已存在,以便我可以跳過創建它,並避免生成額外的列。 我確信它就在那裡,但我在現有的文獻中沒有找到它。
謝謝。
麥克風
回复:判斷列是否存在這是我的邏輯的一個版本,不區分大小寫。
dt = open("$sample_data\Big Class.jmp");
col_name_list = dt << get column names(string);
// Convert all column names to uppercase for case-insensitive search
for (i = 1, i <= nitems(col_name_list), i++,
col_name_list[i] = uppercase(col_name_list[i]);
);
new_column = "BMI";
// English BMI Formula BMI = ( Weight in Pounds / ( Height in inches^2 ) ) x 703
if (!contains(col_name_list, uppercase(new_column)),
dt <<NEW column=""></NEW>回复:判斷列是否存在謝謝女士!
只有您的示例對我有用,因為其他解決方案區分大小寫。 我不得不使用你的,因為我無法確定我的字符串字符的大小寫是否正確。回复:判斷列是否存在PM羅茲,
首先,我要確認您編寫的代碼也適用於我,並且我編寫的解釋與 JMP 9 或 10 的行為不一致。
閱讀您的回復後,我還在 JMP 9 和 10 中嘗試了 contains 和 if 語句與列表、字符串和數字的幾種不同組合。 雖然我的嘗試並不詳盡,但我所有的結果都與你的一致。 最初,當我閱讀您的第一篇文章時,我想起了幾年前我執行的一些故障排除,其中我採用了 contains()>0 的使用。 我無法重現這個場景;但是,我確實在 JMP 腳本編寫指南中找到了以下信息。 它詳細說明了使用 contains 和 >0,這可能適合他們的示例,但沒有明確說明它是或不是必需的。
JMP 腳本編寫指南版本 10 的第 136 頁:
“要評估某個項目是否在列表中,請使用洛克()和包含()和>0 。 返回值為零
表示該項目不在列表中。 返回值 1 表示該項目至少在列表中出現過一次。”
...
“查一下這個數字是否5存在於列表數量:
NRow(Loc(numList, 5)) >0;
0
包含(numList, 5) >0;
0"
希望這可以幫助。
回复:判斷列是否存在你好維貝波,
我嘗試了不同的組合併對正整數取負,無論多大,結果都是 0。所以我的代碼可以工作(在 JMP 9 和 10 中)。話雖如此,我還是很感謝您的提醒——這種方法可能不適用於所有語言。它當然還需要進一步的測試。
b = 2000000000000;
!b;
日誌顯示:
0
問候,
PM羅茲
回复:判斷列是否存在也方便知道。 我總是很高興有另一個工具可以添加到工具箱中。
謝謝。
回复:判斷列是否存在知道這一點非常方便。 我得小心一點。
謝謝
回复:判斷列是否存在據我所知,沒有任何單一功能。 但不見了()結合可編寫腳本()可以做到這一點。
該列還需要用 Try() 語句括起來,以避免在該列不存在時腳本停止。
dt = Open( "$sample_data\Big Class.jmp" );
new_column = "BMI";
If( Is Missing( Is Scriptable( Try( Column( new_column ) ) ) ),
dt << New Column( new_column, numeric, continuous, formula( 703 * :weight / :height / :height ) )
);
回复:判斷列是否存在我不確定 JMP 的所有最新版本是否都是如此。 我發表此評論只是為了強調提高代碼穩健性的機會。
“Contains”返回項目的位置,這可以在“if”語句中使用,因為零將被解釋為 false,正值將被解釋為 true。 當 contains 前面帶有 not '!' 時,該條件在該項不存在或作為第一項存在時起作用;但是,當該項目不是第一個(值大於 1 )時,not '!'可能無法將條件轉換為 false。 這可以通過使用“>0”與“包含”進行比較來避免。 請參閱下面的語法。
dt = Open( "$sample_data\Big Class.jmp" );
col_name_list = dt << get column names( string );
new_column = "BMI";
// English BMI Formula
// BMI = ( Weight in Pounds / ( Height in inches x Height in inches ) ) x 703
If( !(Contains( col_name_list, new_column ) > 0),
dt << New Column( "BMI", numeric, continuous, formula( 703 * :weight / :height / :height ) )
);
回复:判斷列是否存在謝謝,這對我來說效果很好。 我本來希望找到一個函數來檢查是否存在,但這有效。
回复:判斷列是否存在
dt = open("$sample_data\Big Class.jmp");
col_name_list = dt << get column names(string);
new_column = "BMI";
// English BMI Formula
// BMI = ( Weight in Pounds / ( Height in inches x Height in inches ) ) x 703
if (!contains(col_name_list, new_column),
dt <<NEW column=""></NEW>