見出し画像

【JKI】019_Employee_Skills_01_本編

【JKI_019】課題を確認

Just KNIME It! (JKI)

今回の挑戦はこちら

問題文をDeepL翻訳し少し加筆して以下に

課題19:従業員のスキル
レベル:中
 
説明:社員に対して、さまざまな技術やスキルについて1~5で評価してもらうアンケートを実施しました。このデータを分析し、一次、二次、三次スキルのリストとして提示していただきたい。一次スキルは5点、二次スキルは3点と4点、三次スキルは2点と定義します。最終的なリストは、この課題が提案されたKNIMEフォーラムと同じように表示されるはずです。注:どのスキルも3以上に評価されていない(つまり、一次スキルがない)場合もあり得ます。

さて、今回の出題が新しいのは解答の形式指定がフォーラムでされているところ。解答のヒントまで書いてありますね。自由だ。

おそらく求められているのはこのようなリストです。

https://forum.knime.com/t/community-just-knime-it-challenges/40506/8


【入力データの読み込み】

入力ファイル入手先:

Excel Readerでのデータ読込設定をしました。いつもの相対パスでの設定にしています。

設定:

結果:

【Tidy Data型に加工】

Tidy Data型に加工するのはこれまでも良くありました。

「1列1変数」ですね。

設定:

結果:

1従業員につき、36種のプログラムスキルのデータが縦持ちになりました。


【従業員ごとのループ処理①:クラス分け】

ちょっと長いループ処理ですが従業員ごとつまりEmployee IDでグループ分けしてデータ集計しています。ループをかける前に先にクラス分けまでしておいた方が良かったかなぁ

設定:

結果:ループを回し切った後の100人目の結果を例示します

【従業員ごとのループ処理②:リストアップ】

GroupByは裏切らない

今回は同じクラスになった項目をカンマ区切りで文字列にしたいので
Concatenateを使えばいいです。私は何となくUnique concatenate
にしてみました。今回は重複はないデータですから結果は同様と思います。

設定:

デリミタは「,」(カンマ)がデフォルトなので変えていません。

結果:


【従業員ごとのループ処理③:データテーブル整形】

集計が終わったらあとは求められている形にデータを整形すればいいのですが、
私は4つのノードで実装しました。

設定:

RowIDにクラス分けの情報を入れておくと次のTranspose後のカラム名が定義できる。

縦横変換して、解答用のデータテーブルの形に。

従業員のIDは変数に持っているので、それを新たにカラムに追加。

解答用の並びにカラムを並べ替え。

結果:


【従業員ごとのループ処理➃:ループ結果集計】

あとは100人分のループを回して集計するだけです。やっていることは単純です。ただし次回説明しますが設定上の注意点はあります。

設定:デフォルトとはかなり変えています

結果:

上記の通り、出来上がりです。

KNIME workflow (WF)はKNIME Hubに上げました。

おまけ:

【JKI_018 感想戦】

今回は公式解答を見て桂三枝か藤井隆のように椅子から転げ落ちたくなりました。

Regex Find All コンポーネント:

ディスクリプションはさすがにまだ日本語化されていないです。

this component searches and returns all the terms that match the given regular expression.

this component takes a regular expression and a column of type string. When being processed, an array will be returned containing all the words found that match the regular expression.

中身を見ると7つのノードで処理しています。

下記の通り公開もされています。

課題がノード8つ縛りで私は解答時にいろいろ悩みました。

まさかの公開されているコンポーネントは1と数えるルール。

「…っ、いろいろズルいよ…」とふいうちされて赤面するラブコメ主人公の絵が思い浮かんで笑ってしまいました。

<参考、にはなりません>



記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。