【KNIME】ノード紹介:cell splitterとUngroupのコラボ 〜文字列を縦方向に分割したい〜
前回は文字列を特定の区切り文字で分割し、新しいカラムとして(横方向に)分割する方法を紹介しました。
今回は、予告通り縦方向にぶった切ります。目標はこんな感じです。
前回と同様にまずはcell splitterを使って改行(\n, winは¥n)で分割します。Outputの設定をas listにします。
ちなみに、remove dupulicatesを選ぶと、区切った後に重複するものがある場合、ひとつにまとめてくれます(【あ-え-い-あ-う】を"-"で区切って重複除去すると[あ,え,い,う])。
さてlistはかたまり・グループみたいにイメージしておけばいいかなと思います。実行結果を見てみましょう。(…)会員番号_SplitResultListというカラムが出来上がっています。(…)マークは、「このカラムの属性はlistですよ」という意味です。このリストの要素をそれぞれ個別のrowに取り出してあげれば良いということになります。
Ungroup
はい、ここで登場するのがUngroupノードです。このノードは(…)マークで表されるカラム"list"の各要素を独立したrow(行)として分割するノードです。ざっくりいえば、これこそ縦方向に分割するです。設定を見てみます。
このノードの設定画面では、属性がlistのカラムしか表示されません。今回の場合は最初からキャプチャのようになっています。Remove selected collection columnにチェックを入れたままにしておけば、分割したら"分割前の(…)カラム"を勝手に消してくれます。実行結果は次のようになります。
これで冒頭で紹介した、今回の目的は達成です。
<おまけ>Column filter
名前の通りです。いらないカラムを捨てます。最初にあった"改行が含まれるカラム"はいらないので捨てちゃいます。設定を見てみましょう。
残すカラムを緑枠内、捨てるカラムを赤枠内に配置して(add, removeを使って)、apply-OKします。実行すれば、冒頭で説明した今回の目標は完全にクリアです!
前回とセットで、セルの内容を横にも縦にもぶった斬れるようになりました。次回は逆に、同じ内容のセルは一つにまとめたいという事例を紹介したいと思います。
つまり今回の逆
これをやってみようと思います。