确定列是否存在<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>