商品ごとに売上の列を持つデータを使って、売上構成比を計算したい
商品カテゴリー別の売上がそれぞれ別の列として格納されているワイド型のデータ(商品カテゴリーが増えると列が増えていくタイプのデータ)を使って、売上構成比を計算・可視化する方法を紹介します。
手元のデータがワイド型のデータで、注目している指標の構成比を分析したい方に役立ちます。
以下のように商品カテゴリーごとの売上が別々の列として格納されているワイド型のデータでは、売上構成比を直接計算することができません。
各カテゴリーの売上が全体に占める割合を計算・可視化するためには、データ構造の変換が必要になります。
ワイド型からロング型にデータの構造を変更し、表計算を利用することで、売上構成比を簡単に計算・可視化することができます。
今回は1行が1つの月を表し、列には各商品カテゴリー(オフィス用品、家具、電化製品)の売上の情報を持つデータを利用します。
複数の商品カテゴリーの売上列をロング型に変換するため、以下の操作を行います。
オフィス用品から電化製品までの列を選択した状態で、列メニューから「ワイド型からロング型へ」から「選択された範囲」を選択します。
ワイド型からロング型へのダイアログが開いたら、キー列を「カテゴリー」、値の列を「売上」として設定し、実行ボタンをクリックします。
これでワイド型のデータがロング型に変換され、カテゴリーと売上の2列を持つデータを作成することができました。
売上構成比を可視化するため、以下の操作を行います。
チャート・ビューに移動し、チャートタイプを「バー」に設定し、X軸に「注文日」を選択し、月で切り捨てます。
次にY軸に売上を選択し集計関数を「合計値(SUM)」に設定のうえ、色で分割に「カテゴリー」を選択します。
続いてY軸の売上メニューから表計算を選択し、「合計値に対する割合」を選択します。
これで月ごとの商品カテゴリー別の売上構成比を積み上げバーチャートとして可視化することができました。
売上構成比をデータとして計算したい場合、先程のロング型に変換したデータに対して、以下の操作を行います。
「売上」の列ヘッダーメニューから「表計算」を選択し、「…に対する割合」の中から「合計値(SUM)」を選択します。
表計算のダイアログが開いたら、グループに「注文日」を選択し、丸め処理を月に設定します。
値の編集メニューをクリックし、列名を「売上構成比」に変更して実行ボタンをクリックします。
これで月ごとの商品カテゴリー別の売上構成比をデータとして計算することができました。
今回のワイド型の売上データを使って、カスタムRコマンドで売上構成比を計算・可視化したい場合、以下のRコードのサンプルをご参考ください。
# 注文明細データを縦持ちに変換し、売上構成比を計算する
# 1. 商品カテゴリごとに売上を縦持ちに変換(ワイド → ロング)
pivot_longer(
cols = オフィス用品:電化製品, # 売上が格納されているカテゴリ列を選択
values_to = '売上', # 売上の値をこの列に格納
names_to = "カテゴリー", # 元の列名(カテゴリ名)をこの列に格納
values_drop_na = TRUE, # NAの値は削除
names_repair = 'unique', # 列名が重複した場合はユニークな名前に修正
type_convert = TRUE # データ型を適切に変換
) %>%
# 2. 売上構成比を計算
mutate_group(
group_cols = c(`注文日_mon` = "注文日"), # 「注文日」を「注文日_mon」に変換し、月単位でグループ化
group_funs = c("rtomon"), # 「注文日」を月単位に変換(rtomon = 月初の日付に変換)
`売上構成比` = (売上 / sum(売上, na.rm = !all(is.na(売上)) )) * 100 # 売上の合計に対する割合を算出(%表記)
)