KNIME・EXCEL倉庫

KNIMEやEXCELマクロの備忘録です。

【KNIME】Flow Variablesの右のボックスは何か。

・Flow Variablesの右の方にあるボックス(下図のプルダウンメニューの更に右にある白いボックス)は何に使うのか?

f:id:choron81:20210828231539p:plain

・試したところ、Flow Variableを出力するためのボックスであり、対応するFlow Variableに名前を付けて出力する機能があるらしい。

 

・Table Creatorで試してみた(下図)。

f:id:choron81:20210828231457p:plain

 

・普段全く意識しないが、デフォルトでFlow Variableが設定されており、このノードから、Flow Variableを抽出することができるっぽい。

・例えば、「1列目のカラム名を変数として利用したい!」という場合に、DialogのFlow Variableで、testと名付けてFlow Variableとして出力できる(下図)。

f:id:choron81:20210828232601p:plain

f:id:choron81:20210828232727p:plain

・testという名前のflow variableにはcolumn1というvalueが与えられている。

 

・知っておくと結構使えるかも。

 

終わり。

【KNIME】Table Column to VariableとTable Row to Variableを覚えたい

・KNIMEでflow variableを扱う際に、Table Creatorで適当に表を作り、Table Column to Variable又はTable Row to Variableで変数化することがある。

・何故か2分の1以上の確率で間違うので、記事にしておく。

・適当に表を作って、それぞれで変数化した(下図)。

f:id:choron81:20210828172050p:plain

 

・Table Column to Variableだと、1列目のデータとRow IDで変数を作成する。

・Table Row to Varibaleだと、1行目のデータとColumn IDで変数を作成する。

・ということで、Table Column to Varibaleは1st Column to Variable、Table Row to Variableは1st Row to Varibaleと覚えておくと良さそう。

 

終わり。

【EXCEL】もっと乱数を発生させたい

・前回、rand関数で一様分布の乱数を発生させた。

正規分布の乱数を発生させたい。

 

・使う関数は、norm.inv関数。

f:id:choron81:20210818125257p:plain

・確率、平均、標準偏差を入力すると数値を返してくれる。

・正確には、乱数を返してくれるわけではなく、入力した平均値と標準偏差正規分布に関して、累積確率が入力した確率になるような確率変数を返してくれる関数。

・rand()関数で0~1の乱数が返ってくるので、これをnorm.inv関数の確率として入力すれば、正規分布の乱数を返してくれることになる。

・実際に乱数を発生させる目的で使うときは、norm.inv(rand(),平均値,標準偏差)のような形になると思われる。

・ちなみに、1000個出してヒストグラムを描くとこんな感じになる。

f:id:choron81:20210818125828p:plain

正規分布以外の分布でも似たような関数が用意されているので、調べてみると面白いかも。

 

終わり。

 

 

 

【EXCEL】乱数を発生させたい

・なんやかんややっていると、乱数を発生させたいことがある。

・乱数と一口に言っても、いろいろなパターンがあるので、EXCELでの出し方を調べてみた。

 

・一様分布の乱数を発生させたい。

⇒ rand関数を使う。rand関数(=rand())を入力すると、0~1の一様分布を返してくれる。引数はないらしい。EXCELに計算させるたびに乱数が発生するので、注意が必要。

試しに1000個乱数を発生させて、ヒストグラムを描かせてみた(下図)。

f:id:choron81:20210815233259p:plain

・確かに一様分布っぽい。

・ちなみに、特定の範囲の整数の乱数を作成したい場合は、=randbetween(最小,最大)という関数を使うことができる。

・rand()を適切に何倍かしてint関数で整数化させたり、rank関数で順位付けしたりするのも手だと思う(後者は重複しない整数の乱数を得られる)。

 

終わり。

 

 

【EXCEL】もっと便利に検索したい(index + match))

・vlookupは第四の引数にFALSEを入れて完全一致検索にした方が良いっぽい。

・vlookup関数の特徴として、検索列が返し列より左にないといけないらしい。

・調べてみると、index関数とmatch関数を組み合わせることにより、vlookup関数よりも汎用性の高い検索が可能になるっぽい。

 

・index関数

⇒ 表、行番号、列番号などを指定すると、そのセルにある中身を返してくれる関数(下図、囲んだ表の上から4行目、左から2列目なので、四郎氏が返ってくる)。

f:id:choron81:20210815220524p:plain

・match関数

⇒ 検索値と検索対象領域(一行又は一列)を指定すると、検索値が何番目にあるのか返してくれる関数(囲んだ領域の上から4番目に検索対象である1004があるので、4が返ってくる)。

f:id:choron81:20210815221350p:plain

・この二つを組み合わせると、汎用性の高いvlookupのような検索ができる(下表)。

f:id:choron81:20210815222522p:plain

 

・少し弄れば、検索対象列よりも左にある返し列から値をとってくることもできるし、横に検索することもできる。

・覚えておくときっと便利。

 

終わり

 

【EXCEL】vlookupがたまに間違える件について

EXCEL上で表を作成した際に、検索関数であるvlookupを使うことがある。

・vlookupで表を検索すると、なぜかたまに間違えることがある(下図)。

f:id:choron81:20210814235737p:plain

・会員番号1006は田中六郎氏であっている。一方で、会員番号1005は存在せず、氏名を返してはいけないのだが、田中四郎氏が返ってきている。お帰り、四郎。

・この場合は、vlookup関数に4つ目の引数を与えると良いらしい(下図)。

f:id:choron81:20210815000250p:plain

・TRUEだと、近似検索なので、ぴったり合うキーがない場合、それっぽい情報が入っているセルをヒットとして判別する。一方で、FALSEにすると完全一致検索なので、「会員番号1005なんて表中に出てこないよ!」とエラーを返してくれる。

・ちなみに、この状態でキーが重複している1007番を検索すると、TRUEとFLASEで戻り値が異なる(下図)。

f:id:choron81:20210815001926p:plain

・そもそもキーに誤りがあることが悪いのだが、しれっと戻り値を返してしまう。

・「何かエラーを返してくれるんじゃないか」と期待していると、痛い目を見る。

 

・あと、キーが順番になっていない場合にも、TRUEだと変な挙動をする(下図)。

f:id:choron81:20210815002303p:plain

・会員番号1006の田中六郎氏が登録されているにも拘わらず、TRUEでは三郎氏が返ってきてしまっている。

・まとめると、vlookup関数はデフォルト(近似検索)で使うべきではなく、第4の引数にFALSEを指定した方が良い。あと、表がダメだとエラーではなく適当にそれっぽい戻り値を返してくるので、注意が必要。

 

終わり。

 

 

 

 

【EXCEL】表の枠線を消したい

EXCELで表を作成し、画像としてwordなどに張り付ける際に、変に枠線が残ってしまうことがある(下図。罫線として塗っていない「氏名と出身」セルの周りの枠線も画像としてコピペされている)。

f:id:choron81:20210814233809p:plain

・線が残らない方法を残しておく。

 

①すべての枠線を消す

・「ページレイアウト」の「枠線」の☑表示のチェックを外すと(下図)、シート中の枠線がすべて消えてまっさらな状態になる。これでコピペすれば枠線は残らない。

f:id:choron81:20210814234055p:plain

 

②表を白く塗る。

消したい枠線のセルを白く塗りつぶすと(下図左表)、枠線が消える(下図右表)。この状態でコピペすれば、枠線は残らない。

f:id:choron81:20210814234424p:plain

 

 

・個人的には、②の方が同じシート中で枠線の有無を切り替えられるので、頻繁に使う。

 

終わり。