-->

【KNIME】(ナイム)Row Splitter(ロースプリッター)&Row Filter(ローフィルター)の使い方。行方向にフィルタリングだ!!

2022/03/23

Knime

t f B! P L

・この記事の概要

KNIME(ナイム)のRow Splitter(ロースプリッター)と
Row Filter(ローフィルター)を解説。
これらのノードは複数のRow(行)の選別や抽出を行う。


行方向にフィルタリングする!

どうもシャイン社員です
一時期暖かかったですが、また寒い日々が続きますね。
今日はKnimeのノードRow SplitterとRow Filterの使い方について解説します。



何をしたいときに使うの?

Row Splitterは特定の条件下で行方向に表を2分割したい場合に使用します。
Row Filterは特定の条件下で行方向に表をフィルターしたい場合に使用します。

例を挙げるためにサンプルデータを用意しました。

8人の男女の性別、年齢、血液型、身長、体重のデータです。
この表にRow Splitterを使用すると下記のようなイメージになります。

性別を「男」と「それ以外」で分けるという条件のもと、
1つの表を行方向に表を2つに分割することができました。
Row Splitterの出力は「Filtered」と「Filtered Out」があります。
男:のほうが「Filtered」、それ以外が「Filtered Out」の出力となります。



それではRow Filterはどうなんでしょうか?
Row Filterを使用すると下記のようなイメージなります。

こちらも性別を「男のみ」をフィルタリングをすることができました。
勘のいい方はもう気づいたかもしれませんが
Row Splitterの「男のみ」の出力とRow Filterの出力が同じで、
Row Splitterの「それ以外」の出力があるかないかの違いです。

つまりフィルターで弾かれたデータを残すか否かによってどちらが適するか変わります。
データを残さない場合はRow Filterを
データを残しておく場合はRow Splitterを使用するのが良いです。



ほとんど私はデータを残すRow Splitterを使っていますね。

Row Splitter&Row Filterの使い方

それではconfigureの画面を解説していきます。
Row FilterもRow Splitterもconfigure画面は同じです。
ここではRow Splitter画面で解説していきます。


Coulmn(列)を指定して文字列または数値からフィルタリングする。

「Include rows by attribute value」もしくは「Exclude rows by attribute value」
を選択した場合、Configure画面は下記のようになります。


「Include rows by attribute value」を選んだ場合は
「条件にマッチする行を抜き出す」ことになります。
今回の場合で言うと性別:男のみを抜き出すことになります。

「Exclude rows by attribute value」を選んだ場合は
「条件にマッチしない行を抜き出す」ことになります。
今回の場合で言うと性別:男以外の行を抜き出すことになります。
簡単に言うと、出力の「Filtered」と「Filtered out」の内容が入れ替わります。


文字列でフィルターする。「use pattern matching」


まず最初に、「性別:男」の人のみを抜き出すということをやってみましょう。


「Column to test:」から選別の条件に使用したい列(Column)を選びます。
今回は男女の性別で分けるため、「性別」を選択します。

「use pattern mathing」を選択しボックスに「男」と入力します。
これで性別の欄に「男」と記入している行のみを抜き出します

さらにオプションのチェックボックスにチェックを入れることで
細かく条件を設定できます。

・case sensitive matching
これにチェックを入れると大文字、小文字を分けて検出します。

・contains wild cards
チェックを入れると「*(ワイルドカード)」で検出が可能です。
例えば性別の欄に「男」のほかに「男性」という文字列があったとします。
その場合は「男*」と入力することで「男」と「男性」両方を含んだ行を
抜き出すことができます。

・regular expression
正規表現での検出が可能になります。
正規表現についてはこちらのサイトが参考になるかと思います。

数値でフィルターする。「use range checking」


次は身長が160~170㎝の人を抜き出す場合をやってみましょう。


「Column to test:」から「身長」を選択します。
use range checkingを選択して
lower bound(下限値): 160 
upper bound(上限値): 170
と入力します。
(Double関数なので自動で160.0と入力されちゃってます)

この状態で[Clt]+OKでExecuteします。
結果は下記のように身長が160-170の人たちのみを分けることができました。


欠損値でフィルターする。「only missing values match」

欠損値(値が?)を検出することもできます。
年齢が空白の人だけ抜き出してみましょう。

「only missing values match」にチェックを入るだけで可能です。
「Column to test:」から「年齢」を選択します。


「Filtered」の出力を確認すると
欠損値(?)のみの人が分けられていることが確認できました。


行数(Row Number)でフィルターする。

数字や文字列だけでなく、行数を指定してフィルターすることもできます。
先ほどのサンプル表から表の1人目~4人目を抜き出す場合は


「Include rows by number」を選びます。
First row numberに1
Last row numberに4と入力し[Ctrl]+OKします。

表の上から1-4人を抜き出すことができました。


この設定のまま「Exclude rows by number」を選択すると
「1-4人目の人以外を抜き出す」になります。
つまり出力の「Filtered」と「Filtered out」の内容が入れ替わります。

「to end of the table」をチェックすると表の最後までデータを検出します。

行番号(Row ID)でフィルターする。

Row IDで抜き出すことも可能です。
ここではRow IDが「Row2」のひとし君だけ抜き出そうと思います。

「Include rows by row ID」をチェックして
Regular expressionに「Row2」と記入します。



するとRow IDがRow2のひとし君だけ抜き出すことができました。

「Exclude rows by row ID」をチェックした場合は
「Row2」以外の人を抜き出すため
出力の「Filtered」と「Filtered out」の内容が入れ替わります。

ちなみに「case sensitive match」にチェックを入れると
大文字、小文字を判別して検出します。


参考用ワークフロー

今回の記事で使用したワークフローを添付いたします。
こちらからDLいただき、いろいろな設定で試してみてください!


あとがき

そういえば皆さんはネット通販で日用品などを買っていますか?
私は結構ネット通販で日用品を買っています。
近所のドラッグストアとかスーパーより安い場合があるんですよね、Amazonとかって。
それでこの前買ったのがファブリーズです。

Amazonで買うとアルコール配合のファブリーズの詰め替えがお得なんですよね!
しかも私が見たときは「4回詰め替え」のやつより「2回詰め替えx2個」
のほうが安かった気がします…。なんでだろう…。

もしよければ下記のリンクから買ってみてください。






このブログを検索

注目の投稿

【KNIME】(ナイム)最強の表計算マクロソフト!KNIME(ナイム)のご紹介!使い方は?できることは?

この記事の概要 KNIME(ナイム)は表計算、マクロ動作を主機能とするフリーソフト。 エクセルと同等の機能を有しており、行列計算やグラフ描画可能。 ノードと呼ばれる箱を線で繋ぐことで計算処理を行う事が出来るため 関数名などを覚える必要はなく、処理の内容が分かりやすい。 Pytho...

ブログ アーカイブ

スポンサー広告

スポンサー広告

QooQ