我对数据科学感兴趣,而且我对knime很新。我有一个关于在Excel中对数据进行分组的问题。我有一个包含两列的xlsx文件。在xlsx文件中有关于2000人的信息。此信息标题位于A列中,信息位于B列中。在数据中,当一个人的信息完成时,其他人的数据的顺序开始。 A栏中大约有10个独特的标题。人们有一些这些头衔,也许有些人拥有。我想要做的是通过列A中的唯一标题将这些数据转换为列,并将列B中的数据写入行。但是如何?
答案 0 :(得分:1)
您需要在数据中添加一列来标识每行所属的组,然后您可以使用Pivot节点以您希望的方式对其进行转换。
最简单的地方是在Excel中,使用返回上面单元格值的公式,如果A列中的单元格等于“name”,则加1,每次更改名称时都会增加1 。
如果您无法更改Excel源代码,那么在KNIME中执行此操作的最佳方式是使用Gábor建议的Java,R或Python代码段。但是如果你真的想在纯粹的KNIME中做到这一点,那么这是一个缓慢而精细的工作流程:
需要按如下方式配置节点:
Col0
列和Col1
Col0
但不包括Col1
- 只要name
为Col0
,我们就会向name
列提供一个{1}}列}(还有其他每个可能值的列,但我们不会使用这些列)Group 0
此时表格应如下所示:
在递归循环中,
Group 0
替换为公式$Group 0$+$${Iname}$$
- 它取前一个值Group 0
并添加name
的值表的当前迭代的第一行(通过表行变为) Group 0
列现在包含一个在每个名称上递增的值:
最后,透视节点已配置为在Group 0
上进行分组,在Col0
上进行分组,并在Col1
上按First
进行汇总, :
您可以根据需要过滤,重新排序等。
应该可以省去One to Many并简单地将Math Formula配置为每次Col0
的变量等于'name'时添加1,但是我不能让它第一次工作所以我原样离开了。
请注意,只有当name
始终是表格中每个人的第一行时,这才有效,但我不知道如果不是这样,您将如何明确地解释数据。
如果有人有更快或更简洁的KNIME实施,我很乐意看到它!