入社日と退社日から特定の時点で在籍している社員数を可視化する方法

今回は従業員データを使用していきます。

このデータには入社日と退社日の列があります。

もし、退社日の列が欠損値の場合は、下記のノートをご覧ください。

今回やりたいことは、この入社日と退社日から特定の時点で在籍している社員数をラインチャートで可視化したいです。

そのためには、3つのデータラングリングのステップが必要です。

  1. 入社日と退社日を一つの列にまとめる
  2. 社員番号でグループ化する
  3. Seq.Date関数とComplete関数を使って入社日と退社日の間にある期間のデータを生成する

入社日と退社日を一つの列にまとめる

入社日と退社日の間にあるデータを生成するために、入社日と退社日をまとめて一つの列にしたロング型(縦に広がったデータ)にする必要があります。

入社日と退社日の列を、ShiftキーまたはCommandキー(Windowsの場合はctrlキー)で選択します。

次に、列ヘッダメニューからワイド型からロング型へ(Gather) を選び、選択された列を選択します。

ワイド型からロング型へ変換するためのダイアログが表示されます。

キー列と値の列に、任意の列名を入力します。

このキー列には入社日と退社日の列名がまとめられ、値の列にはそれぞれの値(今回の場合は日付)がまとめられます。

今回は、キー列にTypeと入力し、値の列にはDateと入力して実行します。

入社日と退社日の列を一つの列にまとめることができました。

社員番号でグループ化する

次に、社員ごとに入社日と退社日の間にある期間のデータを生成したいため、社員番号でグループ化します。

列ヘッダメニューからグループ化を選択します。

社員番号でグループ化することができました。

Seq.Date関数とComplete関数を使って入社日と退社日の間にある期間のデータを生成する

最後に、Seq関数とComplete関数を使って、入社日と退社日の間にある期間のデータを生成していきます。

seq関数やComplete関数についての詳しい説明は、下記のノートをご覧ください。

ステップメニューからカスタムRコマンドを選択します。

ダイアログが表示されます。

下記のコードをコピー&ペーストします。

complete(Date = seq.Date(min(Date), max(Date), by="month"))

seq.Date関数は、1番目の引数と2番目の引数に指定された期間の日付データを作ります。実際のデータから動的に最初の日と最後の日をとってきたいので、今回はmin関数とmax関数を使います。

次に、どういう単位で日付データを作りたいのかを指定することができます。これが3番目のby=という引数です。今回は「月」の単位でデータを生成したいので、「month」を指定します。

実行すると、社員ごとに入社日と退社日の間の期間のデータを生成することができました。

特定の時点で在籍している社員数を可視化する

データの準備が整ったので、可視化していきます。

チャートタブを表示し、チャートピンが最後のステップに紐づけられていることを確認してください。

チャートのタイプにラインを選択します。

X軸にはDateを選び、集計単位は丸め処理の月を選択します。Y軸には行の数を選択します。

これで、特定の時点で在籍している社員数を可視化することができました。

このデータでは、2016年あたりから急激に社員数が増えていることがわかります。