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