跳转至

3.15、文本处理(多列)

功能模块如图所示:

积木功能

文本处理(多列)

功能:文本处理(多列)节点是文本处理节点的扩展,它将提供的表达式依次应用于每个选定的列。这可用于一次搜索和替换、比较或连接多个列中的字符串。

积木功能

配置界面功能说明:

配置-多列文本处理:

  • 选择列(逐个分配给当前列):节点应该循环的列。可以使用CURRENTCOLUMN在表达式中动态引用这些列。动态引用意味着CURRENTCOLUMN引用不同的列,这取决于在列过滤器中选择的列。允许包含来自列过滤器的非字符串列,但是在将它们替换为CURRENTCOLUMN之前,它们的值将被转换为字符串。
  • 数据列名:输入数据表中的可用列。它们可以在表达式中被静态引用,这意味着它们总是引用输入表中的同一列,无论选择哪些列进行循环。例如,列age可以引用为age。值不会自动转换为字符串。如有必要,转换为字符串,例如string(age)。
  • 函数分类:可选择的字符串函数类别。
  • 函数列表:所选类别中的字符串函数列表。
  • 描述:点击函数列表中的函数,显示改函数对应的描述说明。
  • 表达式:表达式编辑器。在此处编辑表达式内容。
  • 作为新列添加:自定义要追加的新列的名称。
  • 替换选择的输入列:如果选中,则计算值将替换选中循环遍历的列中的值。
  • 将缺少的值插入为空:当任何引用的列(静态的或动态的,见上文)包含缺失值时,可以将缺失值设置为空来计算表达式,也可以完全跳过,只是为输出返回一个缺失值。
  • 如果表达式不能求值,则失败:当表达式不能求值时是否停止节点执行。如果输入列包含表达式无法处理的值,就会出现这种情况(例如,toInt()在包含"1","2","zebra", "4", "5"的列上将在第三行失败)。默认行为是停止执行,但是禁用此选项将输出缺少的值。

简单示例

查询并替换:

  • replace(CURRENTCOLUMN, "Old", "New"),在所有选定列中搜索"Old"并将其替换为"New"。

拼接字符串:

  • join(CURRENTCOLUMNUnit) ,将Unit列中的字符串追加到所选列中的每个字符串。当选择“Freeze”和“Boil”列并将结果附加为新列时,产生下表:
Freeze Boil Unit Freeze with Unit Boil with Unit
0 100 ˚C 0˚C 100˚C
32 212 F 32F 212F
273.15 373.15 K 273.15K 373.15K

高级示例

使用列或流变量来控制字符串操作:

  • 可以使用整型列的值来控制字符串操纵符的整型参数:substr(CURRENTCOLUMNStart Position)提取CURRENTCOLUMN的子字符串,从偏移量k开始,其中k是当前行起始位置列的整型值。例如,当选中的列是Customer,结果被附加为Customer Name Only时,可以使用表达式substr(CURRENTCOLUMNStart Position)生成以下输出:
Customer Start Position Customer Name Only
Mr. Jones 3 Jones
Prof. Desmond 5 Desmond
流变量也可用于控制字符串操作函数的参数。例如,如果有一个整数流变量start-position可用,上面的例子可以重写为substr($$CURRENTCOLUMN$$, $${Istart-position}$$)。

将字符串转换为缺失值:

  • toNull(replace(CURRENTCOLUMN, "NA.", ""))在所有选定的列中搜索"NA.",如果结果字符串为空,则将它们替换为""并返回一个缺失的值。