Vous devez ajouter une colonne à vos données qui identifie un groupe chaque ligne appartient, puis vous pouvez utiliser le noeud Pivot pour le transformer comme vous le souhaitez. Le plus simple est d'utiliser une formule qui renvoie la valeur de la cellule ci-dessus, plus 1 si la cellule de la colonne A est égale à "nom", ce qui donne un nombre qui augmente de 1 pour chaque changement de prénom.
Si vous ne pouvez pas modifier la source Excel, la façon la plus simple de le faire dans KNIME serait avec un fragment Java, R ou Python, comme le suggère Gábor.Toutefois, si vous voulez vraiment faire dans KNIME pur, voici un flux de travail lent et complexe:
Les noeuds doivent être configurés comme suit:
- Excel lecteur retourne une table avec des colonnes
Col0
et Col1
- un à plusieurs comprend
Col0
mais exclut Col1
- ce GIV nous es une colonne name
contenant 1 chaque fois Col0
est name
(également des colonnes pour chacune des autres valeurs possibles, mais nous ne les utiliser)
- Créer table Structure crée 1 colonne entier nommé
Group 0
- Colonne Appender est configuré pour les touches de ligne non identiques et des longueurs de table, et d'utiliser des clés de ligne de la première table
- valeurs manquantes remplace les valeurs manquantes numériques avec la valeur fixe 0
À ce stade, la table devrait ressembler à:
intérieur de la boucle récursive,
- Math Formula remplace la colonne
Group 0
avec la formule $Group 0$+$${Iname}$$
- qui prend la valeur précédente Group 0
et ajoute la valeur name
à partir de la première ligne de l'itération en cours de la table (via Table Row to Variable 0 Le séparateur de ligne est configuré pour 'Inclure les lignes par numéro' et sort les lignes 2 - fin vers le port supérieur et la ligne 1 vers le port inférieur.
La colonne Group 0
contient maintenant une valeur qui augmente sur chaque nom:
Enfin, le noeud pivotant est configuré pour regrouper sur Group 0
, pivot sur Col0
et d'agrégat sur Col1
par le First
méthode, donnant:
que vous pouvez filtrer, réorganiser etc comme vous avez besoin. Il devrait être possible d'omettre le Un à Beaucoup et de configurer simplement Math Formula pour ajouter 1 à chaque fois que la variable pour Col0
équivaut à 'name', mais je ne pouvais pas le faire fonctionner la première fois alors je l'ai laissé tel quel.Notez que cela ne fonctionnera que si name
est toujours la première ligne pour chaque personne dans la table, mais je ne vois pas comment vous pourriez interpréter sans ambiguïté les données si ce n'était pas le cas.
Si quelqu'un a une implémentation KNIME plus rapide ou plus concise je serais heureux de le voir!
Dans HiTS, j'avais un nœud pour cela, [Pivot] (https://raw.githubusercontent.com/aborg0/hits/master/com.mind_era.knime.util/html/nodes/Pivot.html), Vérifiez les exemples. Comme vos groupes ont des longueurs différentes, il n'est pas possible de faire la solution de boucle de groupe, de transposition et de boucle de groupe plus facile. Peut-être que Python, R ou autre chose peut aider ici. –