【KNIME】ノード紹介:cell splitter 〜文字列を分割したい〜
Cell splitter
今回は特定の文字(列)で、エクセルでいうところのセルの中身を分割してみよう!というお話です。紹介するノードはcell splitterです。これは使用率大です!思わぬ場面で活躍してくれています。
*ノードの名前、だいたい"そのまんま"という感じのネーミングになっていますが、やっぱり覚えないとです。とてもたくさんのノードがありますが、各個人の職種、分野などでよく使うノードはある程度限られてきます。慣れればなんとかなりますよ!
さて、キャプチャのような内容のテーブルの【会員番号】について、"-"で分割してみましょう。
これを分割すると、例えば「数字部分だけでソートをかけたい」などの需要に応えることができます。早速設定画面を見ていきます。
設定は簡単です!
- 分割したいカラムを選択(select a column)
- 区切り文字を選択(Enter a delimiter)→今回は"-"
- Outputの形式を選択→デフォルトはas new columns。今回はこのまま。
はい、おしまいです。めちゃ簡単ですね。
ではapply-OKして、実行してみましょう。
分割したフラグメントがそれぞれ新しいカラム(as new columns)として追加されています。カラム名は元の名前に_Arr[n]がくっつけられます。これはcell splitterノードの仕様です。ありがたいことに、前半の文字部分は【S:文字列(string)】、後半の数字部分は【I:整数値(integer)】であると勝手に認識してくれます。
キャプチャの例にはありませんが、【A-22-CCC】みたいな会員番号があったとしたら、3分割されます。また、区切り文字は1文字である必要はないです。
もう少し紹介したいことがあるので、再度設定画面をみてみます。
区切り文字にはエスケープ文字(escape character)の使用が可能です。この場合はuse \ escape characterにチェックをいてれください。(注:windowsの場合は\のところが¥になっているはずです)。
ちなみにmacで\を入力する場合は"option + ¥"です。
IT関係にそんな詳しいわけではないので数年前までは知りませんでしたが、改行ってのは¥nとして表します(CR, LF, CRLFなどOSに依存する部分があるので、¥r¥nでデータとして入っているのに気づかず、¥nで処理してたらハマる、ということもありましたが)。【エスケープ文字】でgoogle先生に聞いてみるといっぱい記事が出てきます。
上のキャプチャのような、1つのセル内に改行されてデータが入ってる場合って結構あると思うんです(私の周囲だけ?)。これをas new columnsとして実行するとこうなります。
ちゃんと分割できます。でも、「あー、横じゃないんだよね。縦方向に分割して欲しいんだよね」みたいな時ってないですか?
そんな時にoutput設定の"as list"が役立ちます。
ということで、次回は
as list設定を活用して、上のように縦方向に分割する方法を紹介しようと思います。