尝试在动态公式中使用时如何处理列名称中的引号<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />假设我有一个带有标题 Greek 和 AlsoGreek 的表,如下所示:
希腊语 也希腊语
阿尔法披
贝塔欧米茄
伽玛泽塔
以下脚本将为我提供一个名为“concat”的列,它将合并 2 列(我在 concat 符号之间添加了制表符以使其更具可读性)。
dt = 当前数据表();
colnames = dt<<获取列名;
colstring=":名称(\!"" || char(colnames[1]) || "\!")";
for(i=2,i<=nitems(colnames),i++,
colstring=colstring || “||” || ":名称(\!"" || char(colnames ) || “\!”)”
);
parsecolstring=解析(colstring);
dt<<新列("concat",公式(parsecolstring));
现在奇怪的是,如果我将表头 AlsoGreek 放在引号中(如“AlsoGreek”),则代码将不起作用。这是错误日志的输出(我在上面代码中的所有变量后面添加了 show ,以便我可以看到发生了什么
colnames = {希腊语, Name("\!"也是希腊语\!"")};
Char(colnames[1]) = "希腊语";
colstring = ":名称(\!"希腊语\!")";
colstring = ":名称(\!"希腊语\!")||:名称(\!"\!"也是希腊语\!"\!")";
应为“)”,但找到了“AlsoGreek”。
第 1 行第 25 列::Name("Greek")||:Name(""►AlsoGreek"")
有解决办法吗?如果没有,有没有办法从列名中提取引号?我尝试使用替换来删除 \!",但 JMP 无法将其识别为字符串...
任何帮助将不胜感激!我有 >100 个列名称中带有引号的列...
回复:尝试在动态公式中使用时如何处理列名中的引号我很难理解你想要实现的目标。 但是,如果您想要连接 JMP 表中的所有 ColumnName,并使用该新名称创建一个新列,则以下代码应该适用于您的示例:
通过创建变量 NameofNewColumn,并在 EVAL 函数中包含的 New Column 语句中使用该变量......可能会帮助你。
dt = 当前数据表();
colnames = dt<<获取列名;
新列名称 = "";
For(i=1, i < N Items(colnames)+1, i++,
新列名称 = 新列名称 || Char(列名);
);
eval(dt<<新列(NameofNewColumn)));
回复:尝试在动态公式中使用时如何处理列名中的引号我想我会回答我自己的回复......
问题是 JMP 无法识别哪些引号与 \!" 关联,哪些不关联。所以我怀疑,当您在带引号的列上使用 char 函数,然后稍后对其进行解析或对该字符串执行其他操作时,您会遇到问题。
有两种方法可以处理此问题 - 第一种方法是将要连接的所有列放入列表中,然后使用 parse(concat(list)) 选项。
另一种方法(这是我使用的)是获取列表中的列,然后使用简单的 for 语句删除引号:
无引号={},
for(i=1,n<=nitems(origlist),i++,
插入(无引号,替换(char(origlist ),"\!"",""));
作为名称(原始列表<<设置名称(无引号);
);
使用无引号列表名称来引用感兴趣的列,完成后,您可以通过执行上述脚本的相反操作将列名称更改回原来的名称。