如何通过 JSL 命名表并稍后在脚本中引用它?您好,我正在尝试从大数据表中选择一小部分数据,并从中创建一个临时表。 总体目标是总结子集数据。 下面的脚本正在创建子集数据表“Name”,但它没有返回对它的引用以供我处理新表。 在下面的脚本中,汇总了测试数据表的数据,但没有汇总名称数据表的数据。
请帮我解决一下。
dt=Open("Test.jmp");
Z= NRow();
k=dt<< Get Rows Where(:Para == "THK" );
pt = dt << Subset(
Rows(k),
Output Table Name("Name"),
);
// I want to summarize the data from this subset data table
Close (dt, No Save);
pt = Current Data Table ();
Summarize(
a=by(:Para, Route),
//b= by(:Route),
c= count,
meanHT = mean(SITE_VALUE),
stdevHT = stddev(SITE_VALUE)
);
show (a,c);
回复:参考输出表名称第一个是疑问句,第二个是陈述句。
使用数据表获取对其的引用,然后重新使用它来发送消息时,通常会很有效。 第一种用法是调用函数来获取该引用并将其存储在变量中以供将来参考。
当前数据表很方便,因为如果未明确指定,JMP 中的大多数操作都会默认使用该表。 第二种用法分配一个表引用以使其成为当前数据表。 想象一下,您打开了几张表,并且想要将一张表切换为当前表。
JSL 中的这一规定是风格问题。 一种风格是否比另一种风格更有利还取决于用例。
回复:参考输出表名称
pt = current data table();
会得到当前数据表
current data table(pk);
将设置当前数据表
回复:参考输出表名称有什么区别
pt = current data table();
和
current data table(pk);
?
回复:参考输出表名称我可能遗漏了一些东西,但从最初的问题来看,所提出的问题似乎是需要能够引用汇总函数的子集数据表。在 JMP 12 中,summary 函数还有一个可用的附加参数。您可以添加数据表作为第一个参数。因此,您需要做的就是将汇总语句更改为:
Summarize(pt,
a=by(:Para, Route),
//b= by(:Route),
c= count,
meanHT = mean(SITE_VALUE),
stdevHT = stddev(SITE_VALUE)
);
另一个观察结果是您使用了以下声明:
pt = current data table();
我相信您真正想做的是将当前数据表设置为 pk,方法是使用:
current data table(pk);
或者我完全被误导了?
回复:参考输出表名称如果您使用“Close()”的“保存”选项,则需要告诉 JMP 将文件放在哪里:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
Close(dt, Save("$DESKTOP/"||(dt << getName)));回复:参考输出表名称<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />谢谢。 似乎解决了我原来的问题。 。
事实上,我原来的脚本似乎也可以工作,只是不允许我轻松处理数据表对象。 就像在本例中(使用您的脚本)一样,我无法保存子集表。 有什么建议么?? 提前致谢
关闭(dtSub,保存);
抛出错误......
输入/输出问题。 无法以读写模式打开。
该系统找不到指定的文件。
保存对 JMP 数据表女性的更改吗?
回复:参考输出表名称在这种情况下,也许 JSL 相当于“表 > 摘要”更好?
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
rows2get = dt << getRowsWhere(:sex == "F");
dtSub = dt << Subset(Rows(rows2get), Output Table("Females"));
dtSummary = dtSub << Summary(Mean(:Weight), Group(:age));