好的,这听起来可能是一个非常简单的问题,但我很难处理它。
所以我的数据格式如下: (number)|(name)|(number)|(name)|(number).... 等等。我有一个循环查看字符串,通过以下方式解析信息分隔符('|'),然后获取该新列表中的所有其他条目(所有“名称”)并仅将这些条目放入新列表中。 然后使用该新列表创建一大堆列。 我发现,然后我从该字符串中使用并放置在每列中的数值在技术上是一个字符,因此当我尝试在列上使用公式时,它只是将所有内容都点出来。 我要做的是创建一个新列并使用该列上的公式。 我的问题是:我已经有一个我想要的所有列名的列表,有没有办法创建具有相同名称的新列,只需用可以处理格式的列替换我创建的初始列?
这个问题可能真的很奇怪,这是我处理解析/列制作的一些脚本:
列表 = {};
// 遍历 :Test_Result 的第一行以获取引脚名称
one_test_result_list = words(column(dt2,"Test_Result")[1], "|");
For(j = 1, j <= nitems(one_test_result_list)/2, j++,
分配(列表,one_test_result_list[j*2]);
);
// 制作引脚列表的新列
对于(g = 1,g <= nitems(列表),g++,
dt2 << 新列(列表,数字,连续,格式(“最佳”,12));
);
// 遍历 :Test_Result 的行(存储字符串的地方)
对于 (i = 1, i <= nrows(dt2), i++,
one_test_result_list = words(column(dt2,"Test_Result") , "|");
For(k = 1, k < nitems(one_test_result_list)/2, k++,
// 将所有新解析的结果存入新值
列(dt2,列表) = 数(one_test_result_list[(k*2)+1]);
);
);
这很有效,我刚刚发现了整个制作新列的事情...... 我希望他们拥有我已经给他们的列名,我只想能够将格式放在他们身上,而不会将每个值都变成一个点。 (我确实在新列上对此进行了测试,并且值实际上正确更改了......)
太感谢了!
对不起,我的措辞很奇怪。 在我的字符串中,我忽略了第一个数字(因为它没用),然后它是一个名称,后跟该名称的值。 我创建了一个新列表,只收集所有名称,然后使用该列表填充所有新列名。 我确实将列设置为数值,我什至用它们对应的数值作为 num 填充列。如我附上的这段代码所示(特别是粗体线):
// 制作引脚列表的新列
对于(g = 1,g <= nitems(列表),g++,
dt2 << 新列(列表,数字,连续,格式(“最佳”,12));
);
对于 (i = 1, i <= nrows(dt2), i++,
one_test_result_list = words(column(dt2,"Test_Result") , "|");
For(k = 1, k < nitems(one_test_result_list)/2, k++,
// 将所有新解析的结果存入新值
列(dt2,列表) = 数(one_test_result_list[(k*2)+1]);
);
);
即使我将值指定为数字并且将列指定为保存数值,但每当我对该列执行任何类型的操作(即使该列成为所有绝对值)时,它都会将该列中的值更改为点. 但是,如果我创建一个新列,并在我创建的第一列中获取值,并为该列设置一个公式,它就会正常运行并显示操作。 似乎我需要创建两倍于我最初存储值所需的列,然后再创建另一列来使用公式。 我不能只在我创建的第一列上使用公式。 问题是,我想保留我最初分配的列名。 我不知道为什么 JMP 不允许我对新列执行操作。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />不确定我是否完全理解您的问题,但是“然后我从该字符串中使用并放置在每列中的数值在技术上是一个字符,所以当我尝试在列上使用公式时,它只是将所有内容都添加了“暗示了一些事情......
JMP 列的数据类型可以定义为“数字”或“字符”以保存所需类型的数据,并且(通过“列信息...”对话框或发送 JSL 消息“myCol << DataType( "Numeric") 或 myCol << DataType("Character")') 您应该将其设置为您想要的。 使用值填充列时,可以使用“Char()”(使用“Num()”)将数值转换为字符值(从字符转换为数值)。 如果您对 JMP 无法解释为数字的文本值使用“Num()”,它将分配一个缺失值(“.”)。