基于列合并两个表(部分匹配或逗号分隔列)?

时间:2017-05-02 10:09:52

标签: mysql r excel knime

我有两个表,它们的共享列不完全匹配(大写字符的差异或某些字符的存在,如逗号,空格和...)。如何根据共享列(在R,Knime,Excel-power查询或sql中)合并这两个表?

Example Tables and Results

1 个答案:

答案 0 :(得分:2)

在您的示例结果表中,不清楚行的位置

gene1 | go3 | 14

来自,因为 Table2 中的go3没有条目。我假设这是一个错误,你的意思是Table2包含行

go3 | 14

如果这是正确的,请在KNIME中执行此操作:

KNIME workflow

两个 Table Creator 节点只创建两个带有列名的表,如示例所示 - 将这些表替换为您的实际数据源。 Cell Splitter 使用逗号作为分隔符拆分列Goes Unpivoting 节点的配置如下:

Unpivoting config

Joiner 是这样的:

Joiner config

所有其他设置都保留为默认设置。如果需要,添加节点以重新排序并过滤Joiner输出中的列。请注意,根据Goes_Arr[n]的{​​{1}}的不同值,您会看到不同的Goes列,Enforce exclusionEnforce inclusion设置可确保Unpivoting正确处理此项

此工作流程应该处理逗号之间的空格,但我认为您还提到大写字母的差异 - 如果您需要处理这些差异,请通过 Case Converter 节点传递每个表格以使它们保持一致

透视和透视很难理解(恕我直言 - 特别是考虑到他们的KNIME节点的神秘描述),但非常强大。我建议花时间玩这些节点来弄清楚它们是如何工作的。