はじめに
今回はExcelの数式にあたる、Math Nodeについて触れます。
使い方は前回触れたString Manipulationと使い方が全く同じなので、使い方はほとんど解説しません。Excelとの対応表を作っていきたいと思います。
Excelの文字列操作に関する数式は、String Manipulation、数値を計算する数式はMath Formulaという住み分けになっています。
今回のテーマ ~Math Formula~
ほとんどExcelと関数は変わりません。数字を計算したかったら、Math Formulaを使用します。
Workflowはこちらからダウンロードできます。
覚えてほしいこと
データ型は数字のみ扱える
Excel-KNIME対応表
意味 | Excel | KNIME |
四則演算 | */+- | */+- |
縦方向合計 | SUM(Col) | COL_SUM(Col) |
横方向合計 | SUM(Col1, Col2, ...) | Col1 + Col2 + … |
縦方向平均 | AVERAGE(Col) | COL_MEAN(Col) |
横方向平均 | AVERAGE(Col1, Col2, ...) | average(Col1, Col2, ...) |
縦方向中央値 | MEDIAN(Col) | COL_MEDIAN(Col) |
横方向中央値 | MEDIAN(Col1, Col2, ...) | Median(Col1, Col2, ...) |
絶対値 | ABS(Col) | abs(Col) |
If文 | IF(条件, True, false) | if(条件, True, false) |
SUMIF文 | SUMIF(範囲, 条件) | 1つ目 if(条件, Col, 0) 2つ目 COL_SUM(Col) |
四捨五入 | ROUND(Col, 桁数) | round(Col, 桁数) |
切り上げ | ROUNDUP(Col, 桁数) | ceil(Col*10^(桁数)) / 10^桁数 |
切り捨て | ROUNDDOWN(Col, 桁数) | floor(Col*10^(桁数)) / 10^桁数 |
行数カウント | COUNT(Col) | ROWCOUNT |
行番号 | ROW() | ROWINDEX |
余り | MOD(Col, 除数) | MOD(Col, 除数) |
乱数0~1 | RAND() | rand() |
平方根 | SQRT(Col) | sqrt(Col) |
円周率 | PI() | pi |
やりたいこと
今回は簡単にするため、時給2000円として、残業代を算出してみましょう。
Math Formulaの使い方
Workflow
Confirm - Before After
Configure
はい、String Manipulationと変わりません。例の通りにExpressionに数式を書いていきましょう。
一点だけString Manipulationと変化している部分は、Step2の出力設定で"Convert to Int"という項目が追加されていることです。
Default設定では、計算結果はすべてDouble型(実数型)で出力されます。もしInteger(整数型)で出力したい場合はここにチェックを入れてください。
小数点が発生している場合は四捨五入されます。
ちょっと一言
もう一つのNode ”Math Formula (Multi Column)”
Math Formulaにはもう一つ、”Math Formula (Multi Column)”というNodeがあります。Nodeの名が示す通り、これは複数コラムに一度に同じ数式を適用したい場合に使用します。
Configureの注意点は1点だけです。
Workflow
Confirm - Before After
Confirmを見ると、一つのNodeで2つの新たなコラムが作成されていることが分かります。
Configure
さて、Configureを見てきます。先ほどと違う点は3点あります。CRRENT_COLUMNを使えば、複数コラムに一度に同じ数式を適用できると覚えておけば後は特に難しくありません。
1.Column Selection
まずはこの数式を適用したいコラムを選択します。
2.CRRENT_COLUMN
Math Expressionに新しく追加されています。これを選択することによって、1で選択したコラムを1つ1つ繰り返し処理のようにして選択することができます。
3.Append Selected Columns with Suffix:
新しいコラムを作成する際、元コラムの名前に付け足す名前をここで指定します。
おわりに
Mathというキーワードだけ覚えておけば後は数式を探すだけですよね。また、Nodeの使い方もString Manipulationと似ていましたよね。
Nodeの名前の規則や、いくつかNodeの使い方を覚えておけば後は、新しいNodeでも同じような構成になっているので、新しいNodeでも何となく使えるようになります。その感覚がつかめればもうKNIMEを習得したも同然です。
ぜひTry&Errorの精神を忘れずに何度も失敗してみてください。
余談
計算と言えば、「イミテーション・ゲーム」超おススメです。
天才数学者がドイツ軍の作った暗号機「エニグマ」を解読する話なのですが、パソコンの概念誕生の話でもあるんです。
実話に基づく話でこの人がいなかったら、今のIT社会はなかったかもしれません!興味のある方は是非観てみてください!!
参考リンク
- すさんのBlog:
【メドケム】KNIMEでリガンド効率を計算するよ 〜言い換えれば、ただの四則演算〜 - 非プログラマーのためのインフォマティクス入門。(仮)
- KNIME公式Node Pit(英語):
- KNIME Example Workflow(英語):