いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【KNIME】文字列を文字数で区切って別々の列に分けたい

・文字列を固定長の別々の列に分けたいことがあった。

・やることはCell Splitterとほぼ同じなので、Cell Splitterで調べてみると、Cell Splitter By Positionなるノードがあった。如何にもこれっぽい。

・このノードは、①区切る文字の隙間の番号と②区切った後の列名を指定することにより、文字列を分割するノードらしい。

・例えば、「あいうえおかきくけこさしすせそ」という15文字の文字列の場合、その間隔は14個ある(「あ1い2う3え4お5か6き7く8け9こ10さ11し12す13せ14そ」)。「あ」「いうえおかきくけこさしすせそ」と区切りたいのであれば、①の区切り位置は1になる。「あ」「い」「うえおかきくけこさしすせそ」と区切りたいのであれば、区切り位置は1,2になる。

・また、②の区切った後の列名は、1か所で区切れば2列できるので2つ指定し、2か所で区切れば3列できるので3つ指定することになる。

・以上を踏まえて、「あいうえおかきくけこさしすせそ」を以下の設定で分割すると

f:id:choron81:20220402233956p:plain

以下のようになった(上の窓はサンプルデータ、下の窓は分割した後の出力ポート)。

f:id:choron81:20220402234043p:plain

 

終わり。

 

 

【KNIME】数値に応じて表を分割したい。

・表中の何らかの数値を基準として、表を分割したいことがあるとする。そんな時には、Rule-based Row Splitterノードが便利。

・ワークフローを組んでみた(下図)。

f:id:choron81:20220402224342p:plain

・Rule-based Row Splitterノードの設定は以下の通り。

f:id:choron81:20220402224454p:plain

・ちなみに、Rule-based Row Filterというノードもある。こっちは分割するのではなく、抽出するので、残りの行は出力ポートに出てこない。

 

終わり。

【KNIME】Missing Valueのある列または行を丸ごと消したい

・Missing ValueのあるTableを処理する際に、何らかの方法でこの穴に対処する必要がある(例えば以下のTable)。

f:id:choron81:20220402094909p:plain

・数値が何等か予想できるのであれば予測値で埋めることもできると思う。群内の欠損地であれば、平均値や中央値で補うこともあるかもしれない。順番になっているのであれば、前の値または後の値を代入したり、前後の平均値を代入する場合もあると思う。

・しかし、最も手っ取り早いのが、データまたは変数を除去してしまう方法だと思う。

・調べてみると、データを除去する場合と変数を除去する場合で使うノードが違ったので、メモしておく。

・Missing Valueの含まれる行を消す例(下図。左の窓は元のデータ。右下の窓は出力。変数3を標的に、Missing Valueが含まれる行を除去)。

f:id:choron81:20220402094436p:plain

・Row FilterノードとMissing Valueノードの設定は以下の通り(上がRow Filter、下がMissing Valueの設定)。

f:id:choron81:20220402094713p:plain

f:id:choron81:20220402094745p:plain

・Missing Valueの含まれる列を消す例(下図。左の窓は元のデータ。右の窓は出力。すべての変数に関して、Missing Valueが含まれる列を除去)。

f:id:choron81:20220402095142p:plain

・Missing Value Column Filterの設定は以下の通り。ちなみに、Missing Value Thresholdをゼロにすると、すべての列が消える。

f:id:choron81:20220402095413p:plain

・前処理に使えそう。

 

終わり。