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

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

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

【KNIME 】Excel?のMROUND関数と同じことをKNIMEでやってみよう!

新年度がスタートしましたね!

私はこの春から、新しいことに挑戦することになりました。これまでは薬品を混ぜたり、フラスコや試験管を触ったりする仕事をしていたのですが(いらすとやイメージだとこんな感じ↓)

f:id:sumtat:20180404222235p:plain

4月からは、computerを使って化学する世界で頑張ることになりました。in silicoとかケモインフォマティクスとか、そういう感じのワード紹介される分野です。ゼロからのスタートなので不安も多いですが頑張ろうと思います。

同業?の方々との繋がりができることも期待しています。*1

 

さて、今日"Ari"さんからコメントを頂きました。

時間をキーに2つのテーブルを結合させようとしているのですが、片方のテーブルは5分きざみ、もう片方は30分きざみとなっています。時間をまるめる、mroundのような機能をご存知でしたら教えてください。

 ちょっと実際の状況がイメージできなかったのですが、

f:id:sumtat:20180404223902p:plain
f:id:sumtat:20180404223916p:plain
連結前のテーブル

上のような2つのテーブルを

f:id:sumtat:20180404224213p:plain

こんな感じにしたいというようなことでしょうか?的外れだったらごめんなさい!

これをExcelのMROUND関数を使った風にして作成してみます。

 まずはサンプルのデータ準備ですが、ここはかるーく流します。

  1. Table Creatorで適当にデータを作って(アルファベットを手入力しました)
  2. Counter Generationで数字を発生(例では開始を5、間隔を5で設定)
  3. Column Renameでカラム名を変更(Counter >> time1)

の3stepsでサンプルデータを作りました。

f:id:sumtat:20180404225459p:plain
f:id:sumtat:20180404225506p:plain
f:id:sumtat:20180404225508p:plain
各工程の設定画面

f:id:sumtat:20180404230010p:plain

サンプルデータの内容

さてさて、本題のMROUND*2風の処理です。

Math Formulaノードを使います。

f:id:sumtat:20180404230826p:plain

"ceil"は整数値への切り上げ関数です。例にも書かれているようにpi(円周率3.1415...)ならceilすると4を返してきます。Ariさんのケースだと、5刻みの数字を30刻み相当に直すような処理をしたいのかなーと想像したので、

30で割って、一旦丸めて(ceilを使用)、30をかけてます!

これでたぶんMROUND関数と同じような処理ができると思います。連続値(continuous)を離散値(discrete)に変換する場面に、私もつい最近遭遇しまして*3その経験を活用してみました。

実行後は下のようになります。

f:id:sumtat:20180404232152p:plain

あとはjoinerで連結させるだけです。

f:id:sumtat:20180404232324p:plain
f:id:sumtat:20180404232336p:plain
設定画面(左)と実行結果(右)

Ariさん、コメントありがとうございました。稚拙な内容の当ブログですが、レスポンスがあるととても嬉しい気分になれます。お金儲けでもないですし、個人の活動なので、お気軽にコメント頂ければと思っています。

そして繰り返しになりますが、的外れだったら本当にごめんなさい。


それではまた次回!

 

 

*1:製薬会社の合成は、社外の方との横の繋がりを作りにくいんですよね。どうしても仕事の話をしようとすると構造式が無いとなかなか深い話はできないですが、構造出しちゃうとターゲットや社内の状況がダダ漏れになっちゃう。

*2:実は私はMROUNDという関数を知らなかったんですね。なのでちょっと調べてこんな感じかなー?という雰囲気でやっているので、全然これ違うんだけど!というご指摘があれば教えてください

*3:hyperoptのhp.normalを使うか、hp.qnormalを使うかという場面でした。ん?なんで割って掛けてんの?と思いましたが、落ち着いて意味を考えたら、なるほどーと思いました。