JMP类比SAS'大家好
我是一个老SAS头(非常精通基础编程......)。但... !
我想在JMP中做一个相当简单的任务。所以它似乎......
基本上,我想打开CITIES.JMP并保留CO中缺少值的所有行(和字段),并可能将此子集保存在新的新的下,例如 CITIES_MISS.jmp。
基准当量是“缺少CO的地方;”
我只是无法解决它。即使我的查询似乎有效,只要我打开子集,我仍然会找到所有数据行,有时只是标记。请帮助您获取示例代码,并解释JMP和SAS逻辑之间的逻辑差异(如果有)。
谢谢你,亲切的问候
新手
回复:JMP类比SAS'所需的JSL类似于:
NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
missingCORows = dt1 << getRowsWhere(IsMissing(:CO));
dt2 = dt1 << Subset(Rows(missingCORows));
dt2 << setName((dt << getName)||"_MISS");
尝试“帮助>书籍>脚本指南”和“帮助>脚本索引”。我不会过多地考虑比较,而是从问题和一些与解决方案“接近”的工作代码开始。经验表明,您将在这里得到很多帮助。
回复:JMP类比SAS'谢谢。现在我有了行。
昨天我花了大约四(!!)小时,甚至没有达到目标
使用Scripting Guide,JSL语法参考,WWW的结果。
所以,如果我问你如何保留所有的话,请耐心等待
其他CTITIES字段,例如 CITY,SO2等 亲切的问候。
回复:JMP类比SAS'我确定你正在寻找这个脚本版本,我会留给别人提供。 就个人而言,我能够在没有任何脚本的情况下完成我想要的95%,对我而言,这是JMP和SAS(或几乎任何其他程序)之间的一个主要区别。 要做你想做的事情 - 没有脚本 - 只需进入行 - 行选择 - 选择位置和高位列名称CO并将其等于空白。 它将选择您要查找的5行。 然后,在Tables下,单击Subset,您将获得所有列,只有那5行。
不幸的是,我认为JMP没有办法自动编写我刚刚编写的内容。 如果进行分析并转到保存脚本,则会自动生成脚本。 但我认为没有办法让JMP自动编写脚本表操作。 我希望有 - 也许有一些我不知道的东西。
回复:JMP类比SAS'非常感谢您的直接评估
我的部分工作是评估JMP的优势和限制,通过脚本作为业务需求来自动化流程。
如果JMP甚至无法处理大多数简单的ETL过程,我们将不得不继续使用JMP。
然而,这可能是一个遗憾,因为它的分析组合看起来很漂亮和花花公子。
回复:JMP类比SAS'当然,JMP可以通过脚本执行您想要的操作。 我只是指出你要求的东西可以在没有你的情况下完成。 没有脚本我做的任何事都有一个在后台执行的脚本。 你试图让JMP工作的4个小时是4个小时试图弄清楚正确的脚本。 我花了5秒钟完成没有脚本的任务。 我明白了 - 你的工作是评估JMP,并且要求是编写脚本。 那么,满足了这个要求。 如果您关注的是评估脚本语言,那么您应该等待其他人做出回应 - 与其他语言相比,此论坛上有很多人可以使用JMP脚本。
回复:JMP类比SAS'也许我将我的请求改写为JMP社区。你能推荐一个
特定的JMP论坛,我可以要求一个可能的JMP脚本方法?
回复:JMP类比SAS'当你说'当你说'时,我不知道你想要做什么的范围在哪里我可以要求一个可能的JMP脚本方法 ”。到底是什么?
如上所述,这是一个获得JMP所有东西支持的好地方,包括JSL。但是,正如这个主题可能表明的那样,很难得到一个清晰的图片 - 取决于问题是如何被提出的,答案可能会或可能不会立即有所帮助,并且可能会或可能不会假设比实际问题更多的背景和先验知识具有。
并且,正如所述,“比较”对于编码来说可能是困难的:对于软件应用来说,它们更加困难。
如果有一个严肃的意图,看看JMP如何满足您对其他软件(包括SAS)的需求,那么我知道当地的JMP团队非常乐意参与并帮助您解决这个问题。
回复:JMP类比SAS'非常感谢您的反馈。也许我让自己不够清楚。
因为我碰巧不仅仅是JMP的新手,所以我更倾向于指向
哪个JMP组或列表我可以发布关于如何过滤JMP的问题
通过“misisngs”条件将数据集转换为子集。我现在意识到我是怎样的
在我原来的帖子上写下“主题”,这不仅仅是误导。
不幸的是,我注意到它已经出来太晚了......
Re:与SAS类似的JMP:通过列中的缺失值过滤数据关闭,但....
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step [DOESNT WORK: SAVED dataset still contains all (N=52) data rows instead of selected (N=5) rows]
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
我甚至尝试了类似的变体
Close( dt2, save( "V:/Process/.../Data/AnewDEMOname.jmp" ) );
它只是不起作用。SAVED数据集仍然包含所有(N = 52)个数据行而不是所选(N = 5)行]。
这是JMP错误吗?
我在Microsoft Windows 10 Enterprise 64位上使用JMP®14.0.0(64位)。
Re:与SAS类似的JMP:通过列中的缺失值过滤数据对不起,我好像错过了dt2的作业。
它应该是:
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
//note the assignment of the result of the subset into the variable dt2
dt2 = dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
我要纠正之前的帖子,所以后来读这篇文章的人都不会感到困惑。
我很抱歉。请继续告诉我们您的进度。
回复:JMP类比SAS'跟进 @ian_jmp 的回答,他是对的,这是地方询问有关JMP的问题。
这里的所有成员都乐意帮助您指明正确的方向。继续提问,让我们帮助你。
话虽如此,学习JSL的最好方法是学会以交互方式使用JMP。尽量不要根据你在SAS中的方式做出如何做事的假设。这两个产品,JMP和SAS都是使用不同的使用模式构建的,因此它们的工作方式不同。
大多数脚本语言都基于使用相同的命令自动执行JMP,这些命令用于交互式地执行操作。例如,在您原来的问题中,您想知道:
基本上,我想打开CITIES.JMP并保留CO中缺少值的所有行(和字段),并可能将此子集保存在新的新的下,例如 CITIES_MISS.jmp。
以交互方式执行此操作的方法是打开CITIES.JMP,选择缺少CO的所有行,然后使用Tables-> Subset创建新数据表。
因此,JSL遵循相同的模式:
//open data table
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
//select all rows of data table where column CO is missing
dt1 << Select Where(is Missing(:CO));
//create a subset of data table with only selected rows, keeping all columns
dt2 = dt1 << subset(selected rows(1));
//note that renaming and saving can be done in one step
dt2 << save("A new name.jmp");
你说:
如果JMP甚至无法处理大多数简单的ETL过程,我们将不得不继续使用JMP。
然而,这可能是一个遗憾,因为它的分析组合看起来很漂亮和花花公子。
我想大多数人都会说JMP可以处理简单(和复杂!)的ETL过程。所以,如果你无法弄清楚如何去做,那就问问吧。
这是一个列表学习JMP的最佳资源。
当您继续探索JMP时,请告诉我们,我们将很乐意为您提供帮助。
[注意20May2019:上面的代码已经更正,以显示对dt2的赋值。最初这是偶然遗漏的。后来的帖子指出了这一点,并在此进行了更正。]
Re:与SAS类似的JMP:通过列中的缺失值过滤数据现在它起作用了。喜欢魅力。非常感谢。