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

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

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

【KNIME】ノード紹介:Nominal Value Row Filter 〜欲しいカテゴリのrowを抽出したい〜

お盆休みですね。まったりと更新してきます。

 

 さて、行(row)の抽出のために使うrow filterやrow splitterには結構色々な種類があります。これまでの記事では

なんかを紹介しました。個人的には上記のsplitter2つをよく使います。

今回はより一段とお手軽な設定で、欲しいカテゴリのデータを抽出するときに活用できそうなノードを紹介します。

 

例題としては、

f:id:sumtat:20170811222111p:plain上記のようなテーブルから、"犬と猿"のデータを取ってこようと思います。

 

Nominal Value Row Filter

設定画面を見た方が早いと思うので、キャプチャを載せます↓

f:id:sumtat:20170811222554p:plain

 

 最初はすべての設定欄が空っぽです。まずカラムを選べと言われるので、今回は"種族"をプルダウンから選びます。

f:id:sumtat:20170811222816p:plain

 

 すると、赤枠のExcludedに種族にはどんな内容が含まれるか、重複を除去して列挙されるので、欲しいものを緑枠のIncludedに移動させて下さい。これで設定は完了です。実行してみます。

f:id:sumtat:20170811223108p:plain

ばっちりですね。

以前に紹介した、Value Counter + Reference row splitter (filter)のコンボ技を1つのノードにしたような感じです。

どちらを使っても正解です!

処理時間に差が出るかもしれませんが、どちらも同じ結果にたどり着けます。各人の好みや、考え方によって色んなパターンのフローが出来上がると思います。

 

「こんな方法もあるよー」とか「こんな工夫ができる」とか、情報共有できる仲間が増えるといいなと思ったのも、ブログを書き始めた理由の一つです。

 

 プログラミング界隈は沢山の記事があったり、gitで公開してたりするけれども、KNIMEに関してはあんまり見ないです。外国の方が作成したyoutubeとかもあるので参考にはするものの、英語もそんなに得意じゃないし…。

 

 さて本題に話を戻して、私は数百万を超えるクラスのデータを扱うケースはそんなに無いので(多くても数十万。そんなに重くない)、基本的にはfilterよりもsplitterを採用して、除いたデータ内も覗けるにしています。なので、前述の方法ではfilterになってしまうのがお好みで無いわけです。私だったら次のようなフロー、設定にします。

 

f:id:sumtat:20170811230512p:plain

冒頭で述べた通り、Row splitterを使います。正規表現を使って

|犬 (または)

という条件にします。正規表現を使っているのでregular expressionにチェックを入れます。これで実行すれば、先ほどと同じ結果になります。

 選択肢がもっと多い場合には、そのリストを別途作成しreference row splitterを使いますね。ちなみに雰囲気としてはこんな感じ↓(詳細割愛)。

f:id:sumtat:20170811231605p:plain

 

 お盆休みの方も多いと思います。交通事故と体調不良には気をつけてお過ごし下さいい。