如何在knime中对行赋予独特的价值?

我对数据科学感兴趣,对于编程我很新颖。 我有一个关于在Excel中分组数据的问题。 我有一个两列xlsx文件。 在xlsx文件中有关于2000人的信息。 这些信息标题在列A中,而信息在列B中。 在数据中,当一个人的信息完成时,另一个人的数据的顺序就开始了。 A列中有大约10个独特的标题。 人们有一些这样的标题,也许有些人都拥有。 我想要做的是将这些数据在列A中的唯一标题转换成数据,并将列B中的数据写入行。 但是,如何?

第一张图片是我的数据看起来像和第二张图片是我想要做的: 这就是我的数据看起来那就是我想要的

您需要在数据中添加一列来标识每行所属的组,然后您可以使用“透视”节点以您想要的方式进行转换。

最简单的方法是在Excel中,使用返回上面单元格的公式,如果列A中的单元格等于“name”,则返回1 – 给每个名称更改增加1的数字。

如果您无法更改Excel源代码,那么在KNIME中最好的方法是使用Java,R或Python代码。 但是,如果你真的想在纯KNIME中做到这一点,这是一个缓慢而复杂的工作stream程:

KNIME工作流程添加组ID

节点需要configuration如下:

  • Excel Reader将返回一个包含列Col0Col1的表
  • 一对多包括Col0但不包括Col1 – 这给了我们一个name列,每当Col0name时, Col0都包含1(对于其他每个可能的值也是列,但是我们不会使用这些)
  • 创build表结构创build一个名为Group 0整数列
  • 列Appenderconfiguration为不相同的行键和表的长度,并使用第一个表中的行键
  • 缺less值用固定值0replace丢失的数字值

在这一点上,桌子应该是这样的:

KNIME表

在recursion循环内部,

  • math公式使用公式$Group 0$+$${Iname}$$replace列Group 0 ,该Group 0采用$Group 0$+$${Iname}$$的前一个值,并从当前迭代表的第一行添加name的值(通过Table行variables
  • 行分割器configuration为'按编号包含行',并输出行2 – 结束到上部端口和行1到下部端口。

Group 0列现在包含一个值,每个名称都是递增的:

KNIME表2

最后, Pivoting节点被configuration为在Group 0上进行Group 0 ,在Col0上进行Col0并通过First一种方法在Col1上聚合,得到:

KNIME表3

您可以根据需要过滤,重新sorting等等。

应该可以省略One to Many,只需简单地将Math Formulaconfiguration为Col0的variables等于'name'时添加1,但是我不能第一次使它工作,所以我将其保留原样。

请注意,只有在name总是表中每个人的第一行时,这才会起作用,但是我不明白如何解释数据。

如果有人有更快或更简洁的KNIME实现,我会很高兴看到它!