<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,大家好,
我是脚本编写的新手,我总是试图在JSL上找到信息教程。对于我的问题,我将非常感谢任何帮助。
基本上,我需要按以下方式排序:城市并总结每个项目的价值:数量,然后显示它。问题是我需要动态地将所有不同字符串的列表组合在一起:City然后总结所有数值:在“城市”列中具有匹配字符串的那些行的数量。
例如,表格看起来像这样
tableEx =
| 市 | 数量 |
|---|
| A1 | 100 |
| a2 | 10 |
| A9 | 29 |
| A1 | 99 |
| A4 | 20 |
| A7 | 91 |
| a2 | 60 |
| A100 | 33 |
| A500 | 三十 |
| A100 | 14 |
| A99 | 2000 |
| 等等... | 等等... |
下一部分不需要阅读来解决我的问题,它只是详细说明我希望如何在我的脑海中解决问题。我希望我能做到这样的事情;
List_Of_CityNames = new List();
switch = false;
表格中的Foreach Row r
{
List_Of_CityNames中的Foreach String city
{
if(r.Get(City)== city)
switch = true; //表示此行:城市条目已在列表中,因此我们无需添加它。
}
if(switch == false)//如果此行的:City尚未列入列表,则执行此操作
{
List_Of_CityNames.Add(r.Get(City)); // city添加到列表中
}
switch = false; //切换重置到列表中尚未找到的城市
}
如果这可以工作,我已经从元组中创建了列表并使其成为字符串+ int对,以便我在上面的循环中总结匹配城市的数量。然后我会通过制作一个新表()来打印出来,如果可以的话。
在收集上述信息之后,我需要将其打印出来,是否有人碰巧知道如何根据列表的动态大小创建表,这可能是也可能不是第一个解决方案的一部分。
dtSolution =新表(“解决方案”,
添加行(/ *数值表示不同城市名称的数量* /),
新列(“/ *列表中的第一个城市* /”,“连续”,设置值(列表(/ *表示总和的变量:相同城市的数量* /)),
新列(“/ *列表中的第二个城市* /”,“连续”,设置值(列表(/ *表示总和的变量:相同城市的数量* /)),
新列(“/ *列表中的第三个城市* /”,“连续”,设置值(列表(/ *表示总和的变量:相同城市的数量* /)),
新列(“/ *列表中的第四个城市* /”,“连续”,设置值(列表(/ *表示总和的变量:相同城市的数量* /)),
新列(“/ *列表中的第五个城市* /”,“连续”,设置值(列表(/ *表示总和的变量:相同城市的数量* /)),
新列(“/ *列表中的第六个城市* /”,“连续”,设置值(列表(/ *表示总和的变量:相同城市的数量* /)),
等等,直到每个城市都被添加到表中//在创建新表之后我可能不得不使用foreach循环将每一行逐个添加到基于pt.1中构建的列表的表中
);
我非常感谢能得到的任何帮助。我也感谢你,如果你最终阅读了所有这些内容。
谢谢,
Loysius
Loysius,
我应该提到Tabulate出现在JMP 10的Tables菜单中。它从JMP 11开始移动到Analyze菜单。
-Michael
制表窗口中的红色小三角形允许您将列表保存为数据表。
使用Michael的解决方案,在创建所需的制表后,单击红色三角形并选择“制作数据表”。 这基本上模仿了我在JSL中所做的事情。
谢谢Michael和PMroz!
我在Tables菜单下找到了Tabulate,但感谢您的反馈。我不知道可以将JSL版本的表复制到剪贴板并将它们粘贴到我的脚本中。
遗憾的是,他们不会复制粘贴,以便它们可以直接使用,它们仍然需要在工作之前进行修改。在这种情况下,PMroz的解决方案显示了使一切正常工作的语法。
此致
Loysius
这是一个JSL程序:
//创建一个示例表
DT = 新表 ( “CityQty” ,添加行 ( 11 ) ,
新栏目 ( “市” ,字符 ,公称 ,
设定值 ( { “A1” , “a2” , “A9” , “A1” , “A4” , “A7” , “a2” , “A100” , “A500” , “A100” , “A99” } ) ) ,
新栏目 ( “数量” ,数字 ,连续 ,格式 ( “最好” , 12 ) ,
设定值 ( [ 100 , 10 , 29 , 99 , 20 , 91 , 60 , 33 ,三十 , 14 , 2000 ] ) )
) ;
//制作一个不可见的表格
DTAB = DT << 制表 (
显示控制面板 ( 0 ) ,
添加表格 (
列表 ( 分析列 ( : 数量 ) ) ,
行表 ( 列分组 ( : 市 ) )
) ,无形 ,
) ;
//将制表转换为表格
dt_new = DTAB << 进入数据表 ;
//删除列表
DTAB << 关闭窗口 ;
如果您在数据表中有City和Qty列,则可以使用Tabulate(在Analyze菜单下)。
转到分析>制表。
将城市拖动到“删除行的区域”。
将Qty拖到标题处,现在显示为“N”。
单击“完成”。
我认为这应该给你一个排序的城市列表及其相应的数量总和。
要通过脚本稍后再现,可以使用Tabulate中的红色三角形菜单转到“脚本”>“将脚本保存到脚本窗口”(或保存到其他各个位置,包括原始数据表本身)。
希望有所帮助,
迈克尔