使用 JMP > 输入和编辑数据 > 重构数据 > 对列中数据重新编码
发布日期: 11/15/2021

对列中数据重新编码

使用重新编码工具可以同时更改一列中的所有值。例如,假设您想要比较计算机公司和制药公司的销售额。您当前的公司标签是“Computer”和“Pharmaceutical”。您想将它们更改为“Technical”和“Drug”。对 32 行中的所有数据逐步更改所有值将会十分繁琐低效,而且容易出错,特别是您的数据行数过多的情况下。重新编码会是一个更好的选择。

注意:

要对多个列中的相似值重新编码,请使用列 > 标准化特性中的“重新编码”选项。请参见标准化列特性

要仅对列标题重新编码,请选择列 > 列名 > 重新编码列名称

要对数据重新编码,请执行以下步骤:

1. 选择帮助 > 样本数据库,然后打开 Companies.jmp

2. 通过点击列标题一次,选择类型列。

3. 选择列 > 重新编码

请注意,默认选定“新建列”以便将重新编码的值放入新列。新列名为类型 2

4. 在”重新编码“窗口的新值框中输入所需的值。对于本例,在“Computer”行中输入“Technical”,在“Pharmaceutical”行中输入“Drug”。

请注意,重新编码的值显示在“更改”框中。

图 4.43 重新编码窗口 

Image shown here

5. 点击重新编码

新值出现在数据表中名为类型 2 的新列下。

注意:

默认情况下,重新编码的数据显示在新列中。要始终对您选定的列重新编码,请选择文件 > 首选项 (Windows) 或 JMP > 首选项 (macOS),选择重新编码,然后从“提交样式”列表中选择原位

默认情况下,“重新编码”窗口中的数据按新值的升序排序。这将同时应用到“重新编码”和“重新编码列名称”。要更改数据排序方式,请选择文件 > 首选项 (Windows) 或 JMP > 首选项 (macOS),选择重新编码并更改“排序样式”首选项。若指定,选择旧值将按列名在数据表中显示的自然顺序对列名进行排序,按值顺序列属性中的顺序对数据进行排序。选择计数可按计数的降序进行排序。

若数据表包含值标签,则标签显示在“重新编码”窗口中名为“新标签”的列中。编辑标签也会修改“值标签”列属性。您还可以选择使用值标签替换值以修改“新值”列中的数据。

对列重新编码时将更新以下列属性:值标签、值得分、值顺序、值颜色、超级类别、编码和缺失值代码。

若在数据类型为“数值型”的列中输入非数值型值,系统将提示您将数据类型转换为“字符型”。点击可转换列并显示新值。点击可保留列为“数值型”并显示缺失值。

在“重新编码”窗口中选择行也会在数据表中选择这些行以进行快速编辑。

重新编码选项

“重新编码”红色小三角旁边的列表中提供了以下选项:

新建列

为更改的数据创建新列并保留原始列。

公式列

使用以公式而不是值表示的更改创建新列。更改数据表原始列中的值将导致公式列自动更新该值。

原位

将任何更改应用到原始数据列。

在“重新编码”窗口还包括其他可用的选项:

过滤

搜索特定值。点击向下箭头选择搜索选项。有关每个选项的详细信息,请参见重新编码中的搜索过滤器选项。请注意,您可以键入正则表达式来定制过滤器。

查看组

取消选择可查看未分组值。默认选定该选项。

仅显示已分组

显示已分组的重新编码值。

仅显示未分组

显示未分组的值。

分组

选定多个值时将变为可用。点击分组可使突出显示的值分到同一组中。若您在分组前编辑过值,则编辑过的值会成为“新值”列中的组代表。否则,出现次数最多的值会成为组代表。

全部

显示所有数据值。

仅修改

仅显示已修改的重新编码值。

仅未修改

仅显示已修改的重新编码值。

更改

显示在“重新编码”窗口中所做的更改的列表。

Image shown here

撤销上次对该窗口所做的更改。

Image shown here

重新调用上一次对窗口进行的更改。

脚本

要保存脚本以重新创建重新编码的数据表,请从红色小三角菜单中选择“脚本”,然后选择一个选项。

“重新编码”窗口包含以下脚本选项:

操作的脚本序列

尝试将您的操作保存到脚本并忽略数据。若使用红色小三角选项将所有字符串转换为大写,则生成的脚本包含将输入字符串转换为大写而不包含数据的代码。

压缩序列

通过删除不必要的操作来压缩顺序操作的脚本。考虑该选项可加快包含多个编辑的重新编码。

多重响应

删除空项

在“多重响应”列中,对数据表中的列重新编码时排除该列中的空项。

删除重复项

在“多重响应”列中,排除重复项。例如,若原始数据为 a、b、b、c,并且没有对这些特定项进行更改,则数据表中的重新编码列将包含 a、b、c。

对项排序

在“多重响应”列中,按字母顺序对各项排序。例如,若原始数据为 b、a、c,并且没有对这些特定项进行更改,则数据表中的重新编码列将包含 a、b、c。

用于重新编码的红色小三角选项

红色小三角菜单包含用于“重新编码”窗口的选项。

转换为首字母大写

将每个字词的首字母转换为大写字母,其余字母转换为小写字母。

转换为大写

将所有值转换为大写。

转换为小写

将所有值转换为小写。

去除首尾空格

删除首尾的空格字符。例如,若在名字 John 前后导入了多余空格,该命令将删除这些空格。

删除空格

删除首尾和内部的空格字符。

压缩空格

删除首尾空格字符并删除内部的重复空格字符。即:若存在多个空格字符,压缩空格命令会将两个空格替换为一个空格。

删除标点

从字词的开头、中间和结尾删除特殊字符(如引号和 & 号)。

替换字符串

将指定字符的所有出现情况替换为新字符串或空白。请注意,您可以键入正则表达式来定制替换内容。

第一个单词

基于字符串的第一个单词对值分组。例如,若值为“John Smith”和“John Adams”,该命令会将它们分组到“John”下。

最后一个单词

基于字符串的最后一个单词对值分组。

分组类似值

允许您定制数据的分组方式。从分组选项列表中进行选择。请参见用于重新编码的分组类似值选项

高级

除第一个单词以外的全部

排除第一个字词后,基于剩余值拆分值。

除最后一个单词以外的全部

排除最后一个单词后,基于剩余值拆分值。

从表应用映射

支持您使用映射数据表中的列来修改目标表中的值。请参见示例:应用映射列中的值

提取段

支持您提取特定字符串。请参见示例:依据逗号拆分

选择最近

支持您将映射数据表列中的值映射到要重新编码的列。

解析为数字

将数据转换为数字。

标签转换为代码

将标签值转换为代码。

转换为字符型

在数值列中,将列转换为字符列。

添加值标签

支持您向每个值分配值标签。

使用值标签替换掉值

用指定的值标签替换“值标签”列属性中指定的值。仅当列具有“值标签”属性时,该选项才可用。

重新调用

重新调用先前在“重新编码”窗口进行的更改。

重新开始

将窗口返回默认状态。

脚本

查看选项以导入、合并或保存“重新编码”脚本。

从文件导入将导入 JSL 脚本以对先前重新编码的数据进行重新编码。在不同数据上运行相同脚本,可通过相同的方式对数据进行重新编码。

从数据表导入将导入保存至数据表的 JSL 脚本。

从重新编码结果列导入将从您选择的列(通常为您保存之前的重新编码结果的列)导入数据。

保存到文件将“重新编码”更改保存到 JSL 脚本。选择“保存”后,系统会提示您命名并保存文件。

保存到数据表将“重新编码”脚本保存到当前数据表。

要修改已保存脚本中的重新编码,请在数据表中右击该脚本并选择使用重新编码编辑。进行更改后,再次从红色小三角菜单中选择脚本 > 保存到数据表以将更改保存到新脚本中。

与数据表脚本合并将在“重新编码”窗口中进行的更改合并至保存到数据表的当前“重新编码”脚本中。若有多个脚本,系统会提示您选择将哪个脚本与重新编码数据合并。

保存到脚本窗口将“重新编码”脚本追加至脚本窗口。

Image shown here发布至公式存储库

将重新编码脚本发布至“公式存储库”,“公式存储库”支持您在其他脚本中重复使用这些代码。

用于重新编码的右击选项

前六个选项可用于分组值:

分组至新值

(仅在选择多个值时可用)支持您为两个或多个选定值指定新值。

分组至

(仅在选择多个值时可用)右击选定值可选择不同的分组值或组代表。该列表显示前 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.44 对类似值分组 

Image shown here

显示在新值列中的值代表重新编码数据表中的分组值。

9. (可选)若要更改新值以表示组中不同的旧值,请右击“Almond Roca”,然后选择成为代表

图 4.45 成为代表 

Image shown here

10. (可选)要用重新编码的数据替换数据表中的原始数据,请从红色小三角菜单中选择原位,然后点击重新编码

示例:依据逗号拆分

Aircraft Incidents.jmp 样本数据表包含用逗号分隔城市和州名称的一列。您可以依据逗号拆分该列中的值,只用州名对该列重新编码。

1. 选择帮助 > 样本数据库,然后打开 Aircraft Incidents.jmp

2. 选择位置列并选择列 > 重新编码

图 4.46 原始数据 

Image shown here

3. 点击红色小三角并选择高级 > 提取段

在“预览”窗格中,注意数据包含城市,后跟逗号和缩写的州名称。您将提取每个字符串的最后两个字符。

4. 取消选择窗口顶部的包括空格包括标点符号

提取过程中将不考虑空格和标点符号。

5. 在“字符”框中键入一个逗号。

图 4.47 指定分隔符 

Image shown here

逗号用于提取最后两个字符。

6. 在“提取段”窗口中,在“开始定位”和“结束定位”上方键入“2”。

在第二个单词处开始并结束段提取。

7. 确保为“开始定位”和“结束定位”选项选择了“从开头”。

图 4.48 “提取段”窗口 

Image shown here

提示:在“要捕获的文本”部分中,点击左箭头或右箭头滚动浏览各值。这样您就可以预览设置。

8. 图 4.48 所示的“预览”窗格中,请注意替换值仅包含州的缩写。

9. 在“预览”窗格中向下滚动。请注意,Atlantic Ocean 的当前值和替换值是相同的。数据不能按逗号拆分。

图 4.49 不具有州的数据 

Image shown here

10. 点击确定

含有匹配的州名的条目将被分组。

图 4.50 重新编码的城市,州名 

Image shown here

示例:应用映射列中的值

映射数据表中的列包含可用于对另一个数据表中的列重新编码的值。在本例中,State Capitals.jmp 中的美国各州将替换为 State Abbreviations.jmp(映射数据表)中定义的州缩写。

1. 选择帮助 > 样本数据库,然后打开 State Abbreviations.jmpState Capitals.jmp

2. State Capitals.jmp 中,选择美国州列。

3. 选择列 > 重新编码

4. 点击红色小三角并选择高级 > 从表应用映射

5. 点击选择表,选择 State Abbreviations.jmp 并点击确定

6. 在“匹配列”框中,选择美国州

7. 在“替换为列”框中,选择缩写

“匹配”列和“替换为”列显示映射的结果。

图 4.51 “匹配”列和“替换为”列 

Image shown here

8. 选择将不匹配的项替换为框并键入“no match”。

“预览”部分显示如何映射值。向下滚动可以看到“no match”的州拼写有误,因此它们不会映射到缩写列中的任何州。

图 4.52 不匹配的列的预览 

Image shown here

9. 点击确定,然后点击重新编码

包含缩写州名的新列出现在 State Capitals.jmp 中名为美国州 2 的新列中。

图 4.53 缩写州名 

Image shown here

要修复不匹配的条目,请参见示例:改正拼写错误单词

示例:改正拼写错误单词

您可以使用数据表作为字典来改正拼写错误的单词。State Abbreviations.jmp 包含与美国各州名称和缩写对应的列。State Capitals.jmp 包含一些拼写错误的州名以模仿实际数据。本例演示如何改正拼写错误的州名。

1. 选择帮助 > 样本数据库,然后打开 State Abbreviations.jmpState Capitals.jmp

2. State Capitals.jmp 中,选择美国州列。

3. 选择列 > 重新编码

4. 点击红色小三角并选择高级 > 选择最近

5. 点击选择表,选择 State Abbreviations.jmp 并点击确定

6. 在“匹配列”框中,选择美国州

7. 在“预览”窗格中,向下滚动并注意“Massachusets”将替换为“Massachusetts”,“Missisippi”将替换为“Mississippi”。

图 4.54 替换拼写错误的州名 

Image shown here

8. 点击确定,然后点击重新编码

包含更新州名的新列将添加到数据表中。

示例:解析为数字

“解析为数字”选项用于将字符型数据转换为数值型数据。该选项等效于 JSL Num() 字符函数。

支持多种格式,如日期和时间、货币以及科学符号。若某种格式不受支持,则会显示缺失值。

1. 打开数据表并选择包含数值和字符值的列。

图 4.55 包含数值型和字符型数据的列 

Image shown here

2. 选择列 > 重新编码

3. 从红色小三角菜单中选择解析为数字

将显示新值和旧值。

图 4.56 新值预览 

Image shown here

4. 点击重新编码

包含重编码值的新列将添加到数据表中。该列的数据类型为“数值”。

“a”无法被解析为数字,因此该值在新列中显示为缺失值。

图 4.57 解析为数字 

Image shown here

示例:将重新编码的值应用到不同列

对列重新编码时,您可以将重新编码的值保存在脚本中。导入或运行该脚本时,您最初重新编码的列将被再次重新编码。

假定您想要对包含相同值的不同列进行重新编码。将重新编码的值保存在某一公式列中,然后编辑该公式。

1. 在“重新编码”窗口的“新值”列中输入重新编码的值。

2. 从红色小三角菜单旁边的列表中选择公式列

3. 点击重新编码

4. 右击公式列,然后选择公式

5. 在公式中,选择已重新编码的列。

在本例中,性别列已重新编码。

图 4.58 重新编码列 

Image shown here

6. 在“列”列表中,选择将替换性别的列。

在本例中,您想要将 sex(性别)列替换为gender(性别),所以选择gender(性别)

图 4.59 选择“gender(性别)”列 

Image shown here

需要更多信息?有问题?从 JMP 用户社区得到解答 (community.jmp.com).