扬声器 | 成绩单 |
| 米娅·斯蒂芬斯(Mia Stephens) | 欢迎参加JMP探索峰会。 我是Mia Stephens,也是JMP产品经理。 我加入了系统工程师乔丹·希勒(Jordan Hiller)的工作。 今天,我们将讨论自动化数据管理工作流程。 |
| 这是摘要,仅供参考;我不会谈论它。 |
| 我们将把这个演讲分为两个部分。 我将开始讨论分析工作流程 |
| 谈论数据创建,我们所说的数据管理是什么意思。 我们将看到如何识别数据中潜在的数据质量问题。 |
| 然后,我将其移交给约旦,约旦将谈论对可重复性的需求。 |
| 他将与我们分享用于数据管理的备忘单,并展示如何...如何在JMP中管理您的数据。 |
| 动作记录器和增强的日志。 |
| 因此,让我们谈谈分析工作流程。 |
| 一切都始于遇到一些我们要解决的业务问题。 |
| 当然,我们需要编译数据,并且您可以编译来自许多不同来源的数据并将数据放入JMP中。 |
| 最后,我们需要能够共享结果,与他人交流我们的发现。 现在有时候这可能是一个一次性的项目, |
| 但通常我们会重复进行分析。 因此,本次演讲所要解决的核心问题是,您可以轻松地再现结果吗? |
| 其他人可以复制您的结果吗? 或者,如果您有新数据,或者如果您有更新数据,是否可以轻松地重复分析,尤其是对这些新数据进行数据整理的步骤? 这就是我们在本次演讲中要解决的问题。 |
| 但是数据管理到底是什么呢? |
| 为什么我们需要对此加以关注? |
| 好吧,数据策划就是要确保我们的数据对推动分析发现有用。 从根本上讲,我们需要能够解决我们要解决的问题。 |
| 它主要涉及数据组织,数据结构以及数据清理。 |
| 如果您考虑我们可能会遇到的数据问题,那么它们通常可以分为四类 |
| 您可能使用了不正确的格式,可能有不完整的数据,缺少了数据或脏的或混乱的数据。 |
| 为了帮助我们讨论这些问题,我们将从STIPS借用一些内容。 而且,如果您不熟悉STIPS,那么STIPS是我们的免费课程,即“工业问题解决的统计思考”。 |
| 这是一门基于七个独立模块的课程,第二个模块是探索性数据分析。 |
| 而且由于探索性数据分析和数据管理的迭代和交互性质,此模型中的最后一课...在本模块中称为“数据准备分析”,因此在整个演讲过程中,我们都大量借鉴了本课。 |
| 让我们分解这些问题中的每一个。 格式不正确。 不正确的格式是什么意思? 好吧,这是当您的数据采用错误的格式或错误的格式进行分析时。 这可以应用于整个数据表。 因此,例如,您可能有 |
| 称为...数据存储在单独的列中,但实际上您需要将数据存储在一个列中。 |
| 也可能是您的数据位于单独的数据表中,而您需要连接或更新或将数据表连接在一起。 |
| 它可以与各个变量有关。 因此,例如,您可能使用了错误的建模类型。 或者您可能在数据表中有日期,因此您可能有日期列,并且可能未将其格式化为天,因此分析可能无法识别这些是...这是日期数据。 |
| 格式化也可以是美观的。 因此,例如,如果您要处理大型数据表,则可能有很多列... |
| 您可能有名称...您可能想要更改的列名确实无法识别。 |
| 您可能希望将许多列组合在一起,以使其更易于管理。 |
| 您的“响应”列可能位于数据表的最后,您可能需要将其上移。 因此,外观问题不一定会影响您的分析,但是,如果您可以解决其中的一些问题,则可以使您的分析更加轻松。 |
| 数据不完整就是您缺少数据的时候。 这可能是缺少重要变量的数据。 因此,例如,您可能没有捕获关于解决问题的基本变量的数据。 也可能是缺少有关变量组合的数据。 |
| 因此,例如,您可能没有足够的信息来估计交互。 |
| 或者您可能有一个您感兴趣的目标变量,该目标变量是不平衡的,因此您可能正在研究诸如缺陷之类的东西。 可能只是您观察的5% |
| 是针对缺陷的,您可能没有足够的数据,您知道,您可能只拥有很小的数据子集 |
| 存在缺陷的位置。 您可能没有足够的数据来了解潜在的缺陷原因。 您可能也没有足够大的样本量,因此您只是没有足够的数据来进行良好的估算。 |
| 缺少数据是指缺少变量的值,这可以采取几种不同的形式。 |
| 如果您正在丢失数据,并且数据...丢失不是随机发生的,这可能会导致严重的问题,因此您的估算可能会有偏差。 |
| 如果您完全随机地丢失数据,则仅丢失一些观测值就不会有问题,但是如果您丢失大量数据,则可能会出现问题。 |
| 脏乱的数据就是您在观察或变量方面遇到问题的时候。 因此,您可能有错误的值,这些值就是错误的。 |
| 您可能有不一致之处。 因此,例如,当人们以不同的方式输入内容时,您可能会遇到错别字或印刷错误。 |
| 该值可能不正确。 因此,例如,您的测量系统可能有问题。 可能有错误,可能有错别字,数据可能已过时。 |
| 过时的数据是指您拥有的数据(例如不再使用的设施或机器)时。 |
| 数据可能已过时,因此您可能要追溯两到三年的数据,但是在该时间范围内,该过程可能已更改, |
| 这意味着那些历史数据可能与当前的流程无关。 您的数据可能已被检查,或者可能已被截断。 |
| 您可以有多余的列,这些列实质上包含相同的信息。 否则您可能有重复的观察结果。 |
| 因此,肮脏或凌乱的数据可以采用许多不同的形式。 |
| 那么,您如何确定潜在的问题呢? |
| 好吧,一个很好的起点是浏览数据,实际上,发现问题会引导您进行数据浏览然后进行分析。 随着您开始探索数据,您开始识别可能导致分析中出现问题的事物。 |
| 因此,一个不错的起点是扫描数据表以查找明显的问题。 |
| 因此,在本讲座的其余部分中,我们将使用一个名为“组件”的示例,这是STIPS课程中的一个示例 |
| 一家公司正在生产小零件的地方,它们的成品率存在问题。 因此收集了369个批次的数据。 已经捕获了15个特征,我们希望使用这些数据来帮助我们了解低产量的潜在根本原因。 |
| 因此,如果我们开始查看数据表本身,就会发现一些线索,说明我们可能会遇到哪种数据质量问题。 这是一个非常好的起点,(并且在JMP 15中添加了它) |
| is是标题图。 我喜欢标题图。 它们的作用是,如果您有一个连续变量显示直方图,那么您就可以看到分布的中心,形状和分布。 |
| 它们还会显示值的范围。 如果您有分类数据,它将为您显示条形图,其中包含数量最多的条形图的值。 因此,让我们看一下其中的一些。 我将从批号开始。 因此批号显示的是直方图,实际上形状是均匀的。 |
| 批号可能是一个标识符,所以马上就可以看出这些数据可能编码不正确。 |
| 我可以看到此分布高度偏斜,并且我也可以看到最小值是-6,这可能使我问起具有负废品号的可行性的问题。 |
| 过程是另一个。 我基本上有两个条形,实际上是在显示只有两个值的直方图。 |
| 当我查看这些柱状图,标题图时,我可以查看列面板中的 |
| 很容易看到,例如,批号,零件号和过程都被编码为连续的。 当您将数据导入JMP时,如果JMP看到数字,它将自动将这些列编码为连续的数字。 这些是我们可能想要更改的事情。 |
| 我们还可以查看数据本身。 因此,例如,当我查看湿度(当您查看数据时,上下文确实很重要)时,湿度就是我们认为是连续数据。 |
| 但是我在这里有几个领域,其中我需要N / A。 |
| 如果您有字母数字数据,并且在数字列中有文本数据,那么当您将数据拖入JMP时,该列将被编码为标称值。 因此,这是马上就要解决的事情,我们认为我们需要对其进行修复。 |
| 我也可以浏览其他列。 因此,例如,供应商,我发现我缺少一些价值。 当您将数据提取到JMP中时,如果存在 |
| 空类别数据的单元格,我们知道我们缺少值。 我可以看到有些条目,我们不一致...输入数据的方式不一致。 |
| 因此,我得到了一些有关数据潜在问题的重要线索。 |
| 注意所有的点。 温度是一个连续变量,当我看到点时,表示我缺少值。 因此温度对我的分析而言确实很重要,这可能会出现问题。 |
| 一个自然的扩展是开始探索数据,一次一个变量。 当我想首先开始查看数据时,我最喜欢的工具之一就是列查看器。 列查看器为我们提供了所选变量的数字摘要。 |
| 如果我们缺少值,那么将有一个N Missing列。 在这里,我可以看到我遗漏了369个温度值中的265个,因此,如果我们认为温度在分析中很重要,那么这就是一个严重的差距。 |
| 我还可以查看是否有一些奇怪的值。 因此,当我查看诸如Mins和Maxes之类的报废数量和报废率时,我得到的是负值。 如果这不可行,那么我的数据或数据收集系统就会出现问题。 |
| 也很容易看到变量的错误编码。 因此,例如,设施和批号(可能应该编码为标称值)报告了平均值和标准偏差。 |
| 考虑这一点的一种好方法是,如果在物理上不可能有平均批号或(部件号是另一个变量)或部件号,则应将其更改为名义变量,而不是连续变量。 |
| 当我第一次熟悉数据时,Distributions是我要去的下一个地方。 |
| 而分布,如果您有连续的数据,则可以了解数据的形状,居中和分布,但是您也可以查看是否有一些异常值。 |
| 对于分类数据,您还可以查看有多少级。 因此,例如,客户编号。 如果客户数量是重要变量或潜在重要变量, |
| 我有很多级别或价值的客户数量。 当我准备数据时,我可能希望将这些数据合并为四个或五个存储桶,并为那些我确实没有大量数据的客户提供另一个类别。 |
| 湿度。 我们在列中看到不适用的问题。 我们看到的是条形图而不是直方图。 |
| 我们可以轻松地在供应商数据中看到我们正在查看的内容。 例如,考克斯公司(Cox Inc)和考克斯(Cox),安德森(Anderson)的拼写有三种不同的方式,赫什(Hersh)的拼写是三种不同的方式。 |
| 对于速度,请注意速度,我们有一个分布分布在60到140之间的分布,但是在最底层,我们看到有一个或两个值 |
| 几乎接近零,这可能是...可能是数据输入错误,但绝对是我们要研究的内容。 |
| 对此的扩展是开始同时查看两个变量的数据。 因此,例如,使用图形生成器或散点图。 |
| 当您一次查看两个变量时,您可以看到模式,并且可以更轻松地看到跨越一个以上变量的异常模式。 |
| 因此,例如,如果我查看报废率和报废数量,就会发现我有一些乐队。 可能是您的数据表中有一些可以解释这种模式的东西。 |
| 在这种情况下,条带归因于不同的批处理大小,因此紫色条带是我的批处理大小为5,000的地方。 |
| 而且与批量较小的废料相比,批量较大的废料有更多的机会。 因此,这可能有些道理,但我也看到了一些没有道理的事情。 这两个值在此处处于负范围内。 |
| 因此,当我查看二维数据时,很容易看到它们。 |
| 我可以使用列切换器和数据过滤器为图形添加更多维度。 |
| 这也使我进入了潜在的分析范围,因此我可能有兴趣了解可能与废品率相关的重要的x是什么。 |
| 同时,查看数据质量问题或潜在问题。 因此,对于废品率,压力和废品率之间似乎存在正相关关系。 |
| 看起来没有太多的关系。 废品率与温度的关系不大,因此这里没有太多事情发生。 |
| 但是请注意速度。 这是消极的关系,但是在最上面我看到了这两个值。我在直方图上看到的一个值,但似乎还有一个突出的第二个值。 |
| 因此,该值可能在60附近只是一个离群值,但这可能是一个有效的点。 我可能会问,这里接近0的这一点是否有效。 |
| 因此,我们查看了数据表。 我们一次只查看了一个变量的数据。 我们一次查看了两个变量的数据,所有这些都恰好适合数据探索并引导我们进行分析。 |
| 我们可能会使用超出本课程或本讲座范围之外的更高级工具(例如,探索异常值,探索缺失值)。 |
| 并且,当您开始分析数据时,您可能会发现其他问题。 因此,例如,如果您有很多类别的类别变量 |
| 并且您尝试将交互方式拟合到回归模型中,就知道JMP会警告您您实际上无法做到这一点。 因此,当您开始分析数据时,整个过程都是反复进行的,并且您将在整个过程中找出潜在的问题。 |
| 关键是要记下在查看数据时遇到的问题。 其中一些可以是 |
| 在进行过程中进行了更正,因此可以隐藏和排除值,可以进行调整形状,可以在进行过程中重新清理数据,但是您可能会决定需要收集新数据。 您可能需要执行DOE,以便对数据本身更有信心。 |
| 如果您知道要重复此分析,或者其他人想重复此分析, |
| 那么您将需要确保捕获要执行的步骤,以确保可重复性。 其他人可以复制您的结果,或者您以后可以重复分析。 所以这是我要把它交给乔丹的地方,乔丹将 |
| 谈论可重现的数据管理。 |
| 乔丹·希勒(Jordan Hiller) | 好的,谢谢你,米娅。 |
| 您好,我是乔丹·希勒。 我是JMP的系统工程师。 让我们深入研究一下有关可重复性的更多信息 |
| 为您的数据管理。 |
| Mia很好地介绍了这个想法,但让我们提供更多细节。 这里的想法是我们希望能够轻松地重新执行 |
| 我们用于准备数据进行分析的所有策展步骤,我发现这样做有三个主要好处。 首先是效率。 如果您必须...如果您的数据发生变化,并且将来需要在新数据上重播这些管理步骤, |
| 与一遍遍所有点击活动相比,使用一键脚本运行一次效率更高。 准确性是第二个好处。 指向和点击可能容易出错,并且通过将其制成脚本来确保正确的再现。 |
| 最后是文档,这可能没有得到足够的重视。 如果您有脚本,它将记录您执行的步骤 |
| 拿。当您不可避免地需要重新访问该项目并记住,准备数据时我做了什么,您可以稍后重新访问它,这是一条痕迹。 |
| 拥有该脚本是一个很大的帮助。 因此,今天我们将进行案例研究。 我将向您展示如何生成这些可重现的数据管理脚本之一 |
| 仅使用点击即可。 而且,启用技术是JMP 16中的新功能。 在增强日志中可以找到增强日志和操作记录。 |
| 因此,这就是我们要做的事情,我们将像往常一样通过点击来执行数据管理活动。 当我们这样做时, |
| 我们需要的脚本,计算机代码(称为JSL代码,用于JMP脚本语言的JSL)将自动为我们捕获 |
| 在新的增强型日志中。 然后,当我们完成点击式策展之后,我们要做的就是获取该代码并将其保存下来。 我们可能要进行一些调整,一些修改,只是使其变得更坚固一点,但这部分是可选的。 |
| 好的,这是您可以使用的备忘单。 这是一些最常见的数据清理活动 |
| 以及如何在JMP 16中执行这些操作,以使自己像面包屑一样,以使JSL脚本保留在增强型日志中。 因此涵盖了诸如对行进行操作,对列进行操作, |
| 修改数据表的方式,我们所有的数据清理操作以及如何通过单击来完成。 |
| 因此,这也不是您需要进行数据清理的所有操作的详尽列表,也不是在增强日志中捕获的所有操作的完整列表,但是,这是您触手可及的最重要的内容。 |
| 好了,让我们使用Mia引入的Components文件进入案例研究,并使用增强的日志在JMP 16中创建数据管理脚本。 |
| 这里是JMP 16。 我将注意到这是JMP 16的早期采用者程序的最新版本,因此这是预发行版本。 但是,我确定这将与JMP 16的实际发行版本非常非常相似。 |
| 因此,要查看日志, |
| 我会在这里给你看。 如果您习惯了以前版本的JMP的日志,这看起来会有所不同。 它分为两个面板, |
| 好吧,顶部是一个消息面板,底部是一个代码面板。 我们将在这里花费一些时间。 我将向您展示这是什么样子,但是,如果我要进行一些快速的活动(例如导入文件并可能删除此列),那么让我们快速预览一下。 |
| 您可以看到我执行的那两个步骤(数据导入和删除列),它们已在此消息面板中列出。 |
| 此代码位于底部面板的下方,该代码是可重现的数据管理脚本所需的JSL代码。 可以,然后呢 |
| 这确实非常令人兴奋,仅通过指向和单击就可以拥有此代码并在需要时随时获取它的功能是JMP 16的巨大优势。 |
| 因此,在JMP 16中,默认情况下会启用此新的增强日志视图。 如果要返回旧版本的日志(即简单的文本日志),可以在“ JMP首选项”部分中执行此操作。 有一个新的 |
| 日志部分,如果愿意,可以切换回日志的旧文本视图。 安装JMP 16时的默认设置是增强的日志,稍后我们将在案例研究中进一步讨论其中一些其他功能。 |
| 好了,我要清理一下 |
| 现在从红色三角形记录日志。 清除日志,让我们从案例研究开始。 让我们导入Mia与您共享的Components数据。 我们将从这个csv文件开始。 |
| 所以 |
| 我将通过将其拖入来执行最简单的导入。 哦,我有一个...我已经打开了一个版本。 对不起,让我,让我从关闭旧版本开始 |
| 并再次清除日志。 |
| 好的,简单导入 |
| 通过将其拖动到JMP窗口中。 现在,我们有了369个批次的文件A组件,现在让我们继续进行数据清理活动。 我打开 |
| 标题图。 我们首先看到的是,设施栏只有一个条目,其中一个值是FabTech,因此这里没有变化,也没有有趣的地方。 我将通过右键单击将其删除,然后删除该列。 |
| 再一次,当我们进入增强日志时,这将被捕获。 |
| 好吧,还有什么? 让我们想象一下,表末尾的这个报废率列对我们来说确实很重要,我想在表的前面看到一个。 我要把它移到第四位置 |
| 通过在列面板中抓住它并将其拖动到客户编号之后的右边。 好了 |
| Mia提到此湿度栏在进口中的显示不正确,主要是由于这些N / A |
| 使它作为字符变量进入的字母字符。 因此,让我们修复它。 我们将右键单击此处进入列信息 |
| 并将数据类型从字符更改为数字,将建模类型从标称更改为连续。 单击确定。 让我们单击此处的日志,您可以看到,现在已经捕获了四个步骤,我们将继续进行。 |
| 好吧,接下来是什么? 我们有几个变量需要从连续更改为名义。 这些是批号,零件号和过程。 因此,在选择了三个选项后,我将右键单击并从连续更改为名义。 |
| 这些都已得到纠正。 |
| 再一次,我们可以看到这三个步骤记录在日志中。 |
| 好吧,还有什么? 此专栏的其他内容 我的工程师喜欢将该列名称视为PSI,因此我们只需选择该列并键入PSI即可对其进行更改。 跳到那里去其他地方。 这也将在日志中捕获。 |
| 供应商。 Mia向我们展示了一些不一致的拼写。 这里可能有太多值。 我们需要更正字符值。 当列中的字符值不正确且不一致时,请考虑使用重新编码工具。 |
| 重新编码工具是解决此问题的一种非常有效的方法。 因此,右键单击供应商,我们将重新编码。 |
| 然后将它们适当地分组。 我将从一些红色三角形选项开始。 让我们将所有值转换为标题大小写, |
| 让我们也修剪该空白,以便纠正不一致的间距。 这已经解决了一些问题。 让我们手动更正所有其他问题。 我将把安德森一家归为一类。 我将把考克斯归为一类。 |
| 对Hershes进行分组。 特鲁特纳(Trutna)和沃利(Worley)在单个类别上已经正确。 我要做的最后一个更正是那些被列为空白或缺失的东西,我会给他们一个明确的 |
| 此处缺少标签。 |
| 好的,当我们单击“重新编码”时, |
| 我们已将这些修复程序添加到名为供应商2的新列中。 |
| 仅有1、2、3、4、5、6个类别已更正并崩溃。 |
| 好的。 |
| 好吧,让我们做一个计算。 我们将在此处使用批次大小和报废数量来计算产量。 |
| 正确的。 是的,我知道这有点多余。 我们已经有了废品率,而产量只是废品率的一分之一,但仅出于论证的目的,我们将执行 |
| 计算。 因此,我希望在废弃数字之后立即插入该收益率列,因此我将突出显示已废弃的数字,然后转到“列”菜单,选择新列。 |
| 我们将其称为产量。 |
| 然后,我们将在废弃数字之后在所选列之后插入新列,然后为它提供一个公式来计算收益。 |
| 我们需要好的单位数量。 这将是批次大小减去报废的数量。 |
| 这就是好的单位数,我们将把整个数除以 |
| 批量大小。 |
| 合格单位数除以批量大小,这就是我们的产量计算。 |
| 然后单击“确定”。 |
| 有我们的新 |
| 产量栏。 我们可以看到这是一个减去废品率。 那是...很好,现在我们忽略一些事实,即我们的收益率大于100%。 |
| 好的,我们快完成了。 只是一些其他更改。 我注意到我们有两个过程,目前,它们仅被标记为过程1和过程2。 |
| 这不是很描述性,也不是很有帮助。 让我们给他们更多的描述性标签。 流程1,我们称为生产流程;和过程2,我们将其称为“实验性”。 因此,我们将使用值标签来执行此操作,而不是重新编码。 我将进入专栏信息 |
| 我们将为一个和两个分配值标签。 |
| 此列中的一个代表生产。 |
| 加上那个。 |
| 其中两个代表实验性。 |
| 加上那个。 |
| 单击确定。 好的。 它在标题图中显示了一个和两个,但在数据表中此处显示了生产和实验。 |
| 好吧,我们保存脚本之前的最后一步。 假设出于争论,我只对数据感兴趣……我只想在真空关闭时进行分析。 |
| 正确,因此我将对数据进行子集并创建一个仅包含禁用真空的行的新数据表。 我将通过右键单击已关闭真空的这些单元之一来做到这一点 |
| 并选择匹配的单元格。 |
| 这将选择313个真空关闭的行。 现在,我们将转到表子集, |
| 创建一个新的数据表,我们将其命名为vac_off。 |
| 单击确定。 |
| 好的,这就是我们的新数据表,其中有313行,仅显示关闭真空的数据。 |
| 到此为止。 我们已经完成了所有数据整理工作,现在让我们返回并重新访问日志,以了解更多有关我们拥有的内容。 |
| 好的,所有这些步骤,以及我不打算做的其他一些步骤,都已记录在日志中。 |
| 看看这里,我们有...每一行都是我们执行的步骤之一。 |
| 还有一些无关紧要的东西,比如我曾经清除了行选择。 我真的不需要...我真的不需要将其作为脚本的一部分。 |
| 清除选定的行,因此将其删除。 我只需要右键单击它,然后清除该项目即可将其删除。 那挺好的。 |
| 好的,所以消息在这里,JSL代码在这里。 我想请您注意来源和结果。 这真是太漂亮了。 |
| 每当我们执行某个步骤时,无论何时我们通过点击操作来执行操作,您都会知道,有一些事情我们会执行该操作,并且会产生一些结果。 这就是起源和结果。 因此,例如,当我们删除设施列时... |
| 好吧,也许这是一个不好的例子……让我们选择改变湿度的列信息。 起源,我们做的事情 |
| 是“ Components A”表,我们在这里看到它是数据表。 当我将鼠标悬停在它上面时,它说将组件A移到最前面,是的,是的,将其带到组件A表。 很不错。 |
| 结果是我们对湿度色谱柱所做的事情。 我们改变了湿度。 我们将其更改为数值数据类型和连续建模类型。 看到这里。 |
| 所以我可以单击此处,转到“湿度”列,它...突出显示,它为我们选择。 JMP为我们选择湿度列。 |
| 到处都是绿色,除了最后一个导致蓝色。 那样可以帮助我们跟踪不同数据表上的活动。 我们在“组件A”数据表上完成了所有这些活动 |
| 最后一个活动是在“组件A”数据表上执行一个子集,结果是一个名为vac_off的新数据表。 因此vac_off为蓝色。 正确,因此我们可以使用这些颜色来帮助您跟踪事物。 |
| 好吧,我想在日志中向您显示的最后一个功能是... |
| 有用的是,如果您要执行的步骤很长,并且只需要查找一个步骤,则可以使用此过滤器框进行查找。 假设我要查找子集。 在那里。 我们找到了子集数据表,我可以直接找到所需的代码。 |
| 好的,这就是我们需要的一切。 我们的数据管理步骤已被捕获。 制作可复制的数据管理脚本所需要做的就是转到红色三角形,然后将脚本保存到新的脚本窗口中。 |
| 导入步骤,删除列步骤,移动废品率步骤。 所有这些步骤都在脚本中。 |
| 我们使用语法着色来帮助我们阅读脚本。 我们有所有这些有用的评论,可以准确地告诉我们在每个步骤中我们正在做什么。 |
| 是的,这就是一切。 这就是我们所需要的,我将保存它。 我将其保存为导入和清理到桌面...让我们将其称为导入和管理组件。 |
| 是的,那是我们可复制的数据管理脚本。 因此,如果我要返回JMP主窗口并关闭除我们的新脚本之外的所有内容, |
| 如果需要重播这些数据管理步骤,请执行以下操作。 我刚刚打开了脚本文件,我们可以单击“运行脚本”按钮来运行它。 打开数据,进行所有清理,执行子设置并创建具有313行的新数据文件。 |
| 现在让我们想象一下,我们需要在新数据上重播此内容。 |
| 我有另一个版本的Components文件。 它称为组件B。 它有50多行,因此它有369行,而不是369行。 想象一下,您知道,我们已经对该流程进行了另外50批处理,并且我们有更多数据。 |
| 所以它称为组件B,我想在组件B上运行此脚本。 但是您会注意到,在整个脚本中,它多次调用了ComponentsA。 因此,我们只需要搜索和替换组件A,然后将其更改为组件B。 编辑。 |
| 搜索。 |
| 我们将找到组件A,将其替换为组件B。全部替换。 15次出现已被替换。 |
| 您可以在这里和这里看到它。 |
| 现在我们只需要重新运行脚本,就可以在新版本的数据上找到该脚本。 您可以看到它有更多的行,实际上它已关闭。 以前是313,现在是358。 |
| 好的,这样一个可重现的数据管理脚本可以针对新数据运行。 |
| 好的,这是备忘单了。 这将是我们在演讲中保存的资料,因此您可以找到并找到它。 这就告诉您如何指向并单击数据整理的方式,并为自己留下一个很好的可重播,可重现的数据整理脚本。 |
| 我们编写的脚本根本不需要我们进行任何编码,但是我将向您提供一些技巧,您可以使用四个技巧 |
| 对脚本进行一些增强。 第一个技巧是在脚本的开头插入这一行。 对您的所有脚本来说这都是一件好事。 只需将行名插入默认值即可。 |
| 这是为了防止您的脚本与其他脚本进行交互。 这称为名称空间冲突,您实际上不必了解它的作用,只需执行它即可。 这是一件好事。 这是很好的编程习惯。 |
| 第二个技巧是确保JSL表达式之间包含分号。 |
| 增强型日志会自动为您执行此操作。 它将所需的分号放在每个步骤之间。 但是,如果您自己进行任何修改,则需要确保正确放置了这些分号。 因此,明智的话。 |
| 添加评论。 |
| 注释是一种将注释留在程序中并以某种方式保留它们的方式,这样您就不会弄乱程序了。 这是一种方法 |
| 在程序中留下一些JSL解释器无法解释的内容。 并注意到增强日志已为您保留...增强日志中的动作记录已为您保留,但是您可以根据需要进行修改和添加。 因此,这里是有关评论的要点。 |
| 典型的格式是两个斜杠,斜杠后面的所有内容均为注释。 因此,您可以在一行的开头或行的结尾处执行此操作。 因此,解释器将运行此X = 9 JSL表达式,但随后它将忽略斜杠后的所有内容。 |
| 如果注释较长,也可以使用此格式,该格式在开头是/ *,在结尾是* /。 附上评论。 因此,注释对于自己留下笔记很有用,但对于调试JSL脚本也很有用。 |
| 如果要删除一行代码并使其不运行,则可以在前面加上这两个斜杠,如果要在更大的代码段中使用它,则可以使用此格式。 很高兴知道如何使用注释。 |
| 我要向您介绍的最后一个技巧是概括数据表引用。 您还记得我们必须进行搜索和替换以使该脚本在新文件名Components B上运行的方式吗? |
| 我们必须在脚本的数据表中更改15个实例。 如果只需要一次而不是15次更改就不好了吗? 这样您就可以使脚本更加健壮 |
| 通过概括数据表的引用。 除了使用名称之外,我们将使用JSL变量来保存这些表名称。 这就是我在说的。 我给你看一个例子。 |
| 左侧是增强日志中的动作记录所生成的一些代码。 |
| 我们正在打开Big Class数据表。 我们正在对年龄列进行操作,将其更改为连续的建模类型,然后创建一个新的计算列, |
| 打开时,我们使用它在“年龄”列上进行更改,然后在此处使用它。 |
| 非常简单,您需要做些什么来使其更强大和更通用。 |
| 您需要进行三个更改。 |
| 这是这里的第一个更改,我们正在分配一个名称。 我选择了卑诗省;您可以选择任何您想要的。 您会经常看到DT。 |
| 因此,BC是在脚本的其余部分中我们将引用该Big Class数据表的名称。 所以当我们想改变年龄时 |
| age表示BC数据表和该数据表中的age列。 |
| 在这里,我们正在向Big Class数据表发送一条消息,这就是双箭头语法的含义。 因此,我们只是将其概括化,因此将其推广化,以便我们使用新名称发送该消息 |
| 到数据表。 现在,如果我们需要在一个名为Big Class以外的名称的新数据表上运行此脚本,这是我们唯一需要做的更改。 我们只需要在脚本中更改一个位置。 我们不必搜索和替换。 |
| 好的,因此,在介绍了这四个技巧之后,如果您准备将策展脚本提高到一个新的水平,请执行以下一些步骤。 您可以添加文件选择器。 不需要太多的编码 |
| 进行更改,以便当有人运行此脚本时,他们可以导航到要运行该文件的文件,而不必手动编辑该脚本。 |
| 所以这是一个好主意。 如果要将脚本分发给组织中的其他用户,则可以将其包装在JMP加载项中,这样用户就可以通过从JMP的菜单中选择脚本来运行该脚本。 |
| 真的很方便。 最后,如果您需要按计划运行此策划脚本以更新保留在网络中某个地方的主JMP数据表,则可以使用Windows中的任务计划程序或Mac OS中的自动程序来执行按计划进行。 |
| 因此,总而言之,Mia讨论了如何通过浏览数据并进行迭代以发现问题来进行数据管理。 |
| 如果使这些步骤自动化,您将获得可重复性的好处,这些就是效率,准确性和记录您的工作。 |
| 要在JMP 16中执行此操作,您只需照常指向并单击,您的数据管理步骤就会被增强日志中的操作记录捕获。 |
| 最后,您可以从增强型日志中导出和修改该JSL代码,以创建可重现的数据管理脚本。 我们的谈话到此结束。 非常感谢您的时间和关注。 |