非プログラマーのためのインフォマティクス入門。(仮)

非プログラマーがインフォマティクスについて勉強したことを記録します。主にKNIMEというソフトを使用しています。

【KNIME】ノード紹介:String Manipulation 〜文字列変換の万能選手〜

今回は下のようなデータに対し、年齢データのおしりに「歳」をつけたり、会員番号のハイフンを@に変えたりしてみます。

f:id:sumtat:20170729222304p:plain String Manipulation

文字列に対して、何か処理を施したい。そんなときは俺に任せろ的なノードです。かなり色んなことができます。めちゃくちゃよく使うノードです!

早速設定を見ていきましょう。

f:id:sumtat:20170730145503p:plain

  まずはFunctionの中から、自分がやりたい処理を探します。慣れるまではちょっと時間がかかりますが、それはしかたないので耐えましょう。Functionの名前を選択すると右側のDescriptionの中にサンプルが出てきます(こうやって書くよ = "結果はこうだよ"の形式)。解説の英語もそんなに難しくないですし、全然わからなくてもサンプルをみれば雰囲気で大体なんとかなります!

今回は【年齢のカラム】に"歳"をくっつけたいのでjoinを使います。

Expressionのエリアに手入力しても良いですし、Function内からjoinをみつけてダブルクリックすると、ある程度勝手に入力してくれます。

続けて、やはり手入力しても良いですが、画面左側のColumn Listの中から【年齢】をダブルクリックすると、Expression内に$年齢$が入ります。カンマで区切って、くっつけたい文字である歳を入力します。この際、文字列は""で囲ってあげましょう

(手入力したものを文字列として認識させたい場合は""で囲うのが基本)

画面左下のAppend Columnを選択すれば、処理後の内容が新たなカラムとして追加されます。Replace Columnを選択すれば、プルダウンにて指定したカラムの内容が、処理後の内容に置き換えられます。

実行してみましょう。

f:id:sumtat:20170730150557p:plain歳がおしりにつきましたね!

もし元の【年齢】カラムの属性がS(string)ではなくI(integer)だった場合は次のように書きます。

join(string($年齢$),"歳")

年齢カラムのデータを文字列に変えて(→string($年齢$))、そのあとでjoinするという記載です。このようにFunctionは複数同時に使うことが可能です。

 

もう一つの例として、会員番号のハイフンを@に置換してみます。

f:id:sumtat:20170730151500p:plain

replaceを使って、上のような感じです。説明が少ないんですが、言い訳をするならば

Descriptionにサンプル付きで全部書いてあるんだもん

ということです。

実行すると確かに置換が行われていますね。

f:id:sumtat:20170730152032p:plainほかにも

  • 文字列の先頭、末尾の空白を削除する
  • 文字列中の2以上の空白を1にする(重複スペースの除去)
  • 正規表現による置換
  • すべて大文字(小文字)に変換
  • 文字数を数える

などなど、Functionは盛りだくさんです。冒頭でも述べた通り、

文字列に対して、何か処理を施したい。そんなときはString Manipulationです。

 

さて次回は、今回の結果を縦横入れ替えた下のようなテーブルにしたりして遊んでみましょう。

f:id:sumtat:20170730154104p:plain

おまけで、みんな大好きピボットテーブルの作り方も紹介できればいいなと思います。