从包含原始值和新值的查找表创建 JMP 12 Recode 脚本<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我今天在 JMP 主博客上发布了这篇文章。Jeff 建议在我的社区博客上分享这些内容也会很有帮助,这样也可以在这里进行搜索。从早期开始,我就经常使用改进后的 JMP 12 Recode 平台,发现它对我的许多数据清理项目都很有帮助。但作为早期用户开始也有其缺点......要找出原因,请继续阅读!
我最近使用了一个JMP 插件我写信导入我的全套 BodyMedia FIT 食物日志数据文件,包括从 2010 年 12 月 21 日到我在该软件中记录膳食的最后一天(2015 年 3 月 29 日)的数据。 我的最终数据表包含 39,942 行食品名称。 自从去年 3 月底我将设备从 BodyMedia 更换为 FitBit Charge HR 以来,我一直保留着 MyFitnessPal 食物日志中的 60 天(1,551 行)数据,再加上我有近 41,000 行食物日志数据!
我为此数据表准备数据的过程中的一个重要步骤是通过将相似的项目合并到单个值下来清理食品项目名称。 如果没有这个清理步骤,我最终会得到许多真正代表相同食品的独特项目名称。 例如,我吃了各种不同的黑巧克力,并指出了可用的正确品牌名称,但经常不得不替换,因为 BodyMedia 数据库中没有许多特定的项目。 这使得确切的名称变得更没有意义,所以我觉得将所有品种聚合在一个名称下是有意义的(“糖果棒,黑巧克力”)。
我在早期采用者安装中使用 Recode 平台清理了去年秋天在 Discovery Summit 上展示的食物日志数据表联合管理计划12. 当时,Recode 缺乏新的“保存/加载脚本”选项,我现在所有数据清理项目都依赖这些选项。 相反,我对我的项目进行了重新编码,并创建了一个查找表,其中列出了我的食物日志中出现的每个独特项目的原始名称和重新编码名称。 每次我向食物日志中添加新项目时,我都会更新此查找表。 我的查找表的一部分如下所示。

在我离开去参加之前QS15上个月在旧金山举行的会议上,我利用 JMP 公式列创建了一个脚本,该脚本可以重新加载到“重新编码”对话框中以重新捕获我的项目分组,以便我可以更新它们。 这使得重新编码新的食品名称并保存更新的脚本变得很简单,以防我将来需要调整我的工作。
因为我发现这个脚本创建技巧非常有用,所以我想我会分享它。 如果您过去使用过类似的查找表方法,您可能会认为在 Recode 中重新创建您的方法需要大量工作。 使用此示例,您也可以从查找表转换为 JMP 12 Recode 脚本,您可以在“重新编码”对话框中重新加载该脚本并进行更新以适应新数据。 最后,您可以轻松地从包含原始值和重新编码值的最终数据表重新创建新版本的查找表。
我需要将我的脚本构造为与标准 Recode 脚本相同,因此我打开了为相关项目保存的脚本。 要保存示例重新编码脚本,您可以在打开的重新编码对话框窗口中创建一些组,然后单击平台的红色小三角并选择“脚本”>“保存到文件”。
我打开包含 Recode 脚本的 JSL 文件,并观察到它以开始更新表的调用开始,以及一组将原始项目名称与重新编码的名称配对的匹配语句。

在脚本的末尾,它包含列名称和数据更新结束。

为了填充位于开始部分和结束部分之间的配对原始名称和重新编码名称的列表,我在查找表中创建了一个新的公式列,其中包含原始项目名称和重新编码项目名称的引用版本。

我将公式列复制并粘贴到脚本窗口中,然后在脚本的顶部和底部添加正确的语句和变量名称。
当我在“重新编码”对话框中重新加载它时,我的脚本创建了如下分组:

然后,我可以添加到现有组、创建新组或编辑代表性组名称。 我使用类似的方法创建了一个脚本版本,用于将项目重新编码为食物分组,因为我已将食物组包含在查找表中并希望对我的新项目进行分组。
我遇到的一个问题是,一种食品名称包含一个双引号字符 (“),我必须将其替换,这样它就不会干扰项目名称的带引号的字符串。
如果您还没有尝试过 JMP 12 Recode 平台,我希望您能尝试一下。 无论您是开始一个新项目还是将旧项目转换为使用该平台,我想您都会很高兴!如果您已经在使用它,我很有兴趣了解您正在从事的项目类型!