あなたは、各行が属するグループを識別するデータに列を追加する必要があり、その後、ピボットノードを使用して、必要な方法で変換することができます。
これは、Excelで、上のセルの値を返す式と、列Aのセルが「名前」に等しい場合は1を使用してExcelで実行されます。名。
Excelのソースを変更できない場合は、KNIMEでそれを行う最もきちんとした方法は、Gáborが示唆するように、Java、RまたはPythonのスニペットを使用することです。あなたは本当に純粋なKNIMEでそれをしたい場合は、ここでは遅いと精巧なワークフローです:
ノードは以下のように設定する必要がありますテーブルを返し
- エクセルリーダー列を含む
Col0
およびCol1
- には
Col0
が含まれますが、Col1
は含まれませんCol0
がname
ある時はいつでも(他の可能な値のそれぞれについても、列が、私たちはこれらを使用することはありません)私たちに1を含むname
列をES - が
Group 0
- 列アペンダという名前の1つの整数列を作成し、テーブル構造を作成します。は欠落値
-
非同一の行キーとテーブルの長さのために構成され、第1のテーブルからの行のキーを使用する固定値0
で欠落している数値を置き換え この時点で、テーブルには、次のようになります。
- 、再帰ループ内
数学式式$Group 0$+$${Iname}$$
でカラムGroup 0
を置き換える - の前の値をとりますGroup 0
を追加し、テーブルの現在の反復の最初の行からname
の値を追加します(テーブル行を介して変数)
- 行スプリッタは、 '番号で行を含む'ように構成され、行2 - 終わりを上位ポートに、行1を下位ポートに出力します。によって
Col1
に
最後ピボットノードはGroup 0
上のグループに設定され、ピボットCol0
上及び集計:
はGroup 0
カラムは、現在、それぞれの名前にインクリメント値を含みますFirst
方法、与える:
必要に応じてフィルタリングや並べ替えなどを行うことができます。
1対多を除外し、Col0
の変数が 'name'と等しくなるたびに1を加算するように数式を設定することは可能ですが、最初に動作させることができませんでしたそのまま。
name
が常にテーブル内の各人の最初の行である場合にのみ有効ですが、そうでない場合にはデータを明確に解釈する方法はわかりません。
誰かが速くて簡潔なKNIMEの実装を持っていれば、私はそれを見てうれしいです!
HiTSでは、このノード[Pivot](https://raw.githubusercontent.com/aborg0/hits/master/com.mind_era.knime.util/html/nodes/Pivot.html)がありました。例を確認してください。グループの長さが異なるため、グループループ開始、トランスポーズ、グループループ終了ソリューションを簡単に実行することはできません。たぶん、Python、Rなど何かがここで助けてくれるかもしれません。 –