使用重新编码工具可以同时更改一列中的所有值。例如,假设您想要比较计算机公司和制药公司的销售额。您当前的公司标签是“Computer”和“Pharmaceutical”。您想将它们更改为“Technical”和“Drug”。对 32 行中的所有数据逐步更改所有值将会十分繁琐低效,而且容易出错,特别是您的数据行数过多的情况下。重新编码会是一个更好的选择。
注意:
• 要对多个列中的相似值重新编码,请使用列 > 标准化特性中的“重新编码”选项。请参见标准化特性。
• 要仅对列标题重新编码,请选择列 > 实用工具 > 重新编码列名称。
要对数据重新编码,请执行以下步骤:
1. 选择帮助 > 样本数据库,然后打开 Companies.jmp。
2. 通过点击列标题一次,选择类型列。
3. 选择列 > 重新编码。
请注意,默认选定“新建列”以便将重新编码的值放入新列。新建列将被命名为类型 2。
4. 在”重新编码“窗口的新值框中输入所需的值。对于本例,在“Computer”行中输入“Technical”,在“Pharmaceutical”行中输入“Drug”。
请注意,重新编码的值显示在“更改”框中。
图 4.40 重新编码窗口
5. 点击重新编码。
新值出现在数据表中名为类型 2 的新列下。
注意:
• 默认情况下,重新编码的数据显示在新列中。要始终对您选定的列重新编码,请选择文件 > 首选项 (Windows) 或 JMP > 首选项 (macOS),选择重新编码,然后从“提交样式”列表中选择原位。
• 若数据表包含值标签,则标签显示在“重新编码”窗口中名为“新标签”的列中。编辑标签也会修改“值标签”列属性。您还可以选择使用值标签替换值以修改“新值”列中的数据。
• 若在数据类型为“数值型”的列中输入非数值型值,系统将提示您将数据类型转换为“字符型”。点击是可转换列并显示新值。点击否可保留列为“数值型”并显示缺失值。
要选择包含特定值的行,请在“重新编码”窗口中右击该值并选择选择行。
• 在“重新编码”窗口中选择行也会在数据表中选择这些行以进行快速编辑。
重新编码选项
“重新编码”红色小三角旁边的列表中提供了以下选项:
新建列
为更改的数据创建新列并保留原始列。
公式列
使用以公式而不是值表示的更改创建新列。更改数据表原始列中的值将导致公式列自动更新该值。
原位
将任何更改应用到原始数据列。
在“重新编码”窗口还包括其他可用的选项:
过滤
搜索特定值。点击向下箭头选择搜索选项。有关每个选项的详细信息,请参见搜索过滤器选项。请注意,您可以键入正则表达式来定制过滤器。
查看组
取消选择可查看未分组值。默认选定该选项。
仅显示已分组
显示已分组的重新编码值。
仅显示未分组
显示未分组的值。
分组
选定多个值时将变为可用。点击分组可使突出显示的值分到同一组中。若您在分组前编辑过值,则编辑过的值会成为“新值”列中的组代表。否则,出现次数最多的值会成为组代表。
全部
显示所有数据值。
仅修改
仅显示已修改的重新编码值。
仅未修改
仅显示已修改的重新编码值。
更改
显示在“重新编码”窗口中所做的更改的列表。
撤销上次对该窗口所做的更改。
重新调用上一次对窗口进行的更改。
要保存脚本以重新创建重新编码的数据表,请从红色小三角菜单中选择“脚本”,然后选择一个选项。
“重新编码”窗口包含以下脚本选项:
操作的脚本序列
尝试将您的操作保存到脚本并忽略数据。例如,若使用红色小三角选项将所有字符串转换为大写,则生成的脚本包含将输入字符串转换为大写而不包含数据的代码。
压缩序列
通过删除不必要的操作来压缩顺序操作的脚本。考虑该选项可加快包含多个编辑的重新编码。
删除空项
在“多重响应”列中,对数据表中的列重新编码时排除该列中的空项。
删除重复项
在“多重响应”列中,排除重复项。例如,若原始数据为 a、b、b、c,并且没有对这些特定项进行更改,则数据表中的重新编码列将包含 a、b、c。
对项排序
在“多重响应”列中,按字母顺序对各项排序。例如,若原始数据为 b、a、c,并且没有对这些特定项进行更改,则数据表中的重新编码列将包含 a、b、c。
红色小三角菜单包含用于“重新编码”窗口的选项。
转换为首字母大写
将每个字词的首字母转换为大写字母,其余字母转换为小写字母。
转换为大写
将所有值转换为大写。
转换为小写
将所有值转换为小写。
去除首尾空格
删除首尾的空格字符。例如,若在名字 John 前后导入了多余空格,该命令将删除这些空格。
删除空格
删除首尾和内部的空格。
压缩空格
删除首尾空格字符并删除内部的重复空格字符。即:若存在多个空格字符,压缩空格命令会将两个空格替换为一个空格。
删除标点
从字词的开头、中间和结尾删除特殊字符(如引号和 & 号)。
替换字符串
将指定字符的所有出现情况替换为新字符串或空白。请注意,您可以键入正则表达式来定制替换内容。
第一个单词
基于字符串的第一个单词对值分组。例如,若值为“John Smith”和“John Adams”,该命令会将它们分组到“John”下。
最后一个单词
基于字符串的最后一个单词对值分组。
分组类似值
允许您定制数据的分组方式。从分组选项列表中进行选择。请参见用于重新编码的分组类似值选项。
高级
除第一个单词以外的全部
排除第一个字词后,基于剩余值拆分值。
除最后一个单词以外的全部
排除最后一个单词后,基于剩余值拆分值。
从表应用映射
支持您将典型(或“主”数据表)的列中的值映射到另一个数据表的列。请参见示例:应用映射列中的值。
提取段
支持您提取特定字符串。请参见示例:依据逗号拆分。
选择最近
支持您将“主”数据表列中的值映射到要重新编码的列。
解析为数字
将数据转换为数字。
标签转换为代码
将标签值转换为代码。
转换为字符型
在数值列中,将列转换为字符列。
添加值标签
支持您向每个值分配值标签。
使用值标签替换掉值
用指定的值标签替换“值标签”列属性中指定的值。仅当列具有“值标签”属性时,该选项才可用。
重新调用
重新调用先前在“重新编码”窗口进行的更改。
重新开始
将窗口返回默认状态。
脚本
查看选项以导入、合并或保存“重新编码”脚本。
‒ 从文件导入将导入 JSL 脚本以对先前重新编码的数据进行重新编码。在不同数据上运行相同脚本,可通过相同的方式对数据进行重新编码。
‒ 从数据表导入将导入保存至数据表的 JSL 脚本。
‒ 从重新编码结果列导入将从您选择的列(通常为您保存之前的重新编码结果的列)导入数据。
‒ 保存到文件将“重新编码”更改保存到 JSL 脚本。选择“保存”后,系统会提示您命名并保存文件。
‒ 保存到数据表将“重新编码”脚本保存到当前数据表。
要修改已保存脚本中的重新编码,请在数据表中右击该脚本并选择使用重新编码编辑。进行更改后,再次从红色小三角菜单中选择脚本 > 保存到数据表以将更改保存到新脚本中。
‒ 与数据表脚本合并将在“重新编码”窗口中进行的更改合并至保存到数据表的当前“重新编码”脚本中。若有多个脚本,系统会提示您选择将哪个脚本与重新编码数据合并。
‒ 保存到脚本窗口将“重新编码”脚本追加至脚本窗口。
发布至公式存储库
将重新编码脚本发布至“公式存储库”,“公式存储库”支持您在其他脚本中重复使用这些代码。
前六个选项可用于分组值:
分组至新值
支持您为两个或多个选定值指定新值。
分组至
右击选定值可选择不同的分组值或组代表。“分组至”选项显示所有旧值及其对应的新值。该列表显示前 8 个可能的组代表。
交换新值
当突出显示两个或更多值时,选择交换新值可使第一个值的新值采纳第二个值的新值,反之亦然。
成为代表
右击组中的单个值并选择成为代表可使选定的值成为新值。
从组中删除
值分组后,右击一个或多个值以将其从该组中删除。
分组类似值
右击单个字符串可查找类似值。“分组选项”窗口随即显示。请参见用于重新编码的分组类似值选项。
为所有数据提供了以下选项:
选择行
选择数据表中的选定行。
制成数据表
创建“重新编码”窗口中显示的结果数据表。
复制选定的列行
仅从您右击的列复制数据。您可以随后将该数据粘贴到数据表中。
复制选定的表行
复制所有列的数据。您可以随后将该数据粘贴到数据表中。
选择以下分组类似值命令可增加分组准确度:
忽略大小写
将忽略项的大小写。
忽略非打印字符
将忽略非打印字符。某些数据可能包含仅计算机能够读取的非打印字符(如文件分隔符)。
忽略空格
将忽略空格。
忽略标点符号
将忽略标点符号。
允许进行字符编辑
当分组类似值时允许用新值替换字符。
最大差异比
根据最大比例差异对值进行分组。例如,键入“.25”,可对至多存在 25% 差异的值进行分组。
最大字符差异
根据不相邻字符差异的最大数对值进行分组。例如,键入“5”,可对存在 5 个或少于 5 个字符差异的值进行分组。
最小源字符串长度
防止字符串太短时被匹配。尝试使用该选项以及“差异比”和“最大字符差异”选项,以指定适用于数据的值。
点击搜索框旁边的下箭头按钮以优化搜索。
包含词条
返回包含一部分搜索条件的项。搜索“ease oom”返回如“Release Zoom”这样的消息。
包含短语
返回包含完全搜索条件的项。搜索“text box”返回包含“text”后面直接跟着“box”的条目(例如,“Context Box”和“Text Box”)。
以短语开头
返回以搜索条件开始的项。
以短语结尾
返回以搜索条件结束的项。
整条短语
返回包含整个字符串的项。搜索“text box”返回仅包含“text box”的条目。
正则表达式
允许您在搜索框中使用通配符 (*) 和句点 (.)。搜索“get.*name”查找包含“get”后面跟着一个或多个单词的项。它返回“Get Color Theme Names”、“Get Name Info”、“Get Effect Names”等。
反转结果
返回不匹配搜索条件的项。
匹配全部项
返回同时包含两个字符串的项。搜索“t test”返回包含任一搜索字符串或两者的元素:“Pat Test”、“Shortest Edit Script”和“Paired t test”。
忽略大小写
忽略搜索条件中的大小写。
全字匹配
基于“匹配全部项”设置返回包含字符串中每个单词的项。若您搜索“data filter”,并且选择了“匹配全部项”,则返回同时包含“data”和“filter”的条目。
您可以根据类似值之间存在差异的字符数对其进行分组。
1. 选择帮助 > 样本数据库,然后打开 Candy Bars.jmp。
2. 选择名称列。
3. 选择列 > 重新编码。
4. 点击红色小三角并选择分组类似值。
5. 确保已选定“允许进行字符编辑”。
6. 在“最大差异比”旁边,键入“.5”。
这允许 JMP 将存在 50% 或少于 50% 差异的值进行分组。换句话说,就是至少共享相同字符的 50%(或一半)的值。“差异比”是由比较每个值的总字符数和两个给定值之间的唯一字符总数决定的。
7. 在“最大字符差异”旁边,键入“6”。
将对不超过六个字符的值进行分组。
8. 点击确定。
图 4.41 对类似值分组
显示在新值列中的值代表重新编码数据表中的分组值。
9. (可选)若要更改新值以表示组中不同的旧值,请右击“Almond Roca”,然后选择成为代表。
图 4.42 成为代表
10. (可选)要用重新编码数据替换数据表中的原始数据,请点击重新编码。
Aircraft Incidents.jmp 样本数据表包含用逗号分隔城市和州名称的一列。您可以依据逗号拆分该列中的值,只用州名对该列重新编码。
1. 选择帮助 > 样本数据库并打开 Aircraft Incidents.jmp。
2. 选择位置列并选择列 > 重新编码。
图 4.43 原始数据
3. 点击红色小三角并选择高级 > 提取段。
在“预览”窗格中,注意数据包含城市,后跟逗号和缩写的州名称。您将提取每个字符串的最后两个字符。
4. 取消选择窗口顶部的包括空格和包括标点符号。
提取过程中将不考虑空格和标点符号。
5. 在“字符”框中键入一个逗号。
图 4.44 指定分隔符。
逗号将用于提取最后两个字符。
6. 在“提取段”窗口中,在“开始定位”和“结束定位”上方键入“2”。
段提取将在第二个单词处开始和结束。
7. 确保为“开始定位”和“结束定位”选项选择了“从开头”。
图 4.45 “提取段”窗口
提示:在“要捕获的文本”部分中,点击左箭头或右箭头滚动浏览各值。这样您就可以预览设置。
8. 在Figure 4.45所示的“预览”窗格中,请注意替换值仅包含州的缩写。
9. 在“预览”窗格中向下滚动。请注意,Atlantic Ocean 的当前值和替换值是相同的。数据不能按逗号拆分。
图 4.46 不具有州的数据
10. 点击确定。
含有匹配的州名的条目将被分组。
图 4.47 重新编码的城市,州名
“主”表中的列包含可用于对另一个数据表中的列重新编码的值。在本例中,State Capitals.jmp 中的美国各州将替换为 State Abbreviations.jmp(主表)中定义的州缩写。
1. 选择帮助 > 样本数据库,然后打开 State Abbreviations.jmp 和 State Capitals.jmp。
2. 在 State Capitals.jmp 中,选择美国州列。
3. 选择列 > 重新编码。
4. 点击红色小三角并选择高级 > 从表应用映射。
5. 点击选择表,选择 State Abbreviations.jmp 并点击确定。
6. 在“匹配列”框中,选择美国州。
7. 在“替换为列”框中,选择缩写。
“匹配”列和“替换为”列显示映射的结果。
图 4.48 “匹配”列和“替换为”列
8. 选择将不匹配的项替换为框并键入“no match”。
“预览”部分显示如何映射值。向下滚动可以看到“no match”的州拼写有误,因此它们不会映射到缩写列中的任何州。
图 4.49 不匹配的列的预览
9. 点击确定,然后点击重新编码。
包含缩写州名的新列出现在 State Capitals.jmp 中名为美国州 2 的新列中。
图 4.50 缩写州名
要修复不匹配的条目,请参见示例:改正拼写错误单词。
您可以使用数据表作为字典来改正拼写错误的单词。State Abbreviations.jmp 包含与美国各州名称和缩写对应的列。State Capitals.jmp 包含一些拼写错误的州名以模仿实际数据。本例演示如何改正拼写错误的州名。
1. 选择帮助 > 样本数据库,然后打开 State Abbreviations.jmp 和 State Capitals.jmp。
2. 在 State Capitals.jmp 中,选择美国州列。
3. 选择列 > 重新编码。
4. 点击红色小三角并选择高级 > 选择最近。
5. 点击选择表,选择 State Abbreviations.jmp 并点击确定。
6. 在“匹配列”框中,选择美国州。
7. 在“预览”窗格中,向下滚动并注意“Massuchets”将替换为“Massachusetts”,“Missisippi”将替换为“Mississippi”。
图 4.51 替换拼写错误的州名
8. 点击确定,然后点击重新编码。
包含更新州名的新列将添加到数据表中。
“解析为数字”选项用于将字符型数据转换为数值型数据。该选项等效于 JSL Num() 字符函数。
支持多种格式,如日期和时间、货币以及科学符号。若某种格式不受支持,则会显示缺失值。
1. 打开数据表并选择包含数值和字符值的列。
图 4.52 包含数值型和字符型数据的列
2. 选择列 > 重新编码。
3. 从红色小三角菜单中选择解析为数字。
将显示新值和旧值。
图 4.53 新值预览
4. 点击重新编码。
包含重编码值的新列将添加到数据表中。该列的数据类型为“数值”。
“a”无法被解析为数字,因此该值在新列中显示为缺失值。
图 4.54 解析为数字
对列重新编码时,您可以将重新编码的值保存在脚本中。导入或运行该脚本时,您最初重新编码的列将被再次重新编码。
假定您想要对包含相同值的不同列进行重新编码。将重新编码的值保存在某一公式列中,然后编辑该公式。
1. 在“重新编码”窗口的“新值”列中输入重新编码的值。
2. 从红色小三角菜单旁边的列表中选择公式列。
3. 点击重新编码。
4. 右击公式列,然后选择公式。
5. 在公式中,选择已重新编码的列。
在本例中,性别列已重新编码。
图 4.55 重新编码列
6. 在“列”列表中,选择将替换性别的列。
在该例中,您想要将 sex(性别)列替换为gender(性别),所以选择gender(性别)。
图 4.56 选择“gender(性别)”列
7. 右击性别列并选择替换所有出现的选定子表达式。
gender(性别)将替换 sex(性别)。
图 4.57 替换所有出现情况