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

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

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

【KNIME】ノード紹介:Value Counter 〜重複データを探せ〜

 今回は指定したカラムの中に重複するデータがあるのか無いのか簡単に分かるノードValue Counterを紹介します。繋ぐだけの簡単ノードなので、おまけ活用例もあわせて紹介しますね。

 それでは、webに転がっていたデータを一部改変したものを使って進めていきます。

f:id:sumtat:20170805221129p:plain

名前と連絡先が入ってますね。この中から連絡先に重複があるかどうか確認します。

 

Value Counter

説明が不要なほど簡単です。設定画面では、重複を確認したいカラムを指定してapply-OKするだけです。

f:id:sumtat:20170805221519p:plain

実行するとこうなります↓

f:id:sumtat:20170805221734p:plain

 指定したカラムの内容がrowIDとなり、その重複回数がcountというカラム名で吐き出されます。つまり、countが1以外のものは重複してるということです。簡単だと思いませんか?私は、このノードをとてもよく使います。もうお気づきかもしれませんが、KNIMEのテーブル表示ではカラム名のところをクリックするとソートをかけることができます。但し、あくまで表示のみ。実際にソートをかけたいときはsorterというノードを使います。これはまた別の機会に。

  • Descendingにして1ではない数が一番上に来たら、重複ありです
  • Ascendingにして?が一番上に来たら、欠損値ありです

 こんな感じにすると簡易的に状況把握できます。データの数が数百万とか多い時に、テーブル上でソートさせると処理が重く、固まることがあるので要注意です。

 

<おまけ>

 ここからおまけです。重複している連絡先が2つあるようです。このデータを元のファイルから抽出してみます。紹介する内容は1つの例です。他の方法もあると思いますが参考になれば幸いです。

 

 まずRow Splitterでcountが1のもの(重複がないものを)下側出口▶︎へと分離します。つまり、上側出口▶︎には重複があるものが残ります。

f:id:sumtat:20170805223802p:plain

続いてReference Row Splitterへ繋いでいきます。

 

Reference Row Splitter

 上側の入口▶︎にあるデータの中から、下側の入口▶︎で入力されたデータと同じものがある場合、出口の上側▶︎からデータを出す。なかったものは下側の出口▶︎になるというノートです。

f:id:sumtat:20170805224641p:plain

 設定は簡単です。照らし合わせたい【上側入口▶︎由来のカラム名【下側入口▶︎由来のカラム名】を設定してapply-OKするだけです。ちなみに、①で読んだデータ数(rowの数)は②+③のデータ数(rowの数)に必ず一致するはずです。

 さて実行結果をみてみましょう。

f:id:sumtat:20170805225045p:plain

元のデータで重複している部分だけ抜き出すことができました。

 

 Value Counterは重複を確認するだけでなく、このカラムにはどんな内容が入っているのかなーみたいなのを確認したい時にも使えますし、実用性の高いノードではないかと思います。是非活用してみてください。