売上は企業の成長と持続可能性を測る最も基本的な経営指標の1つです。
新規・既存顧客からの売上を区別して把握することで、新規顧客の獲得がうまくいっているか、既存顧客との関係性が良好に保たれているかを具体的に確認できます。
この指標は、営業部門だけでなく、経営陣や事業部門の責任者にとっても重要な判断材料となり、四半期、月次、週次など、定期的にモニタリングすることになります。
営業にとって最も重要なことの1つは、売上を増やすことです。
そして、売上を増やすためには、売上を「新規顧客」からのものと「既存顧客」からのものに分けて考えることが重要です。
なぜなら、売上を増やす方法の1つは「既存顧客」からの売上を増やすことで、
もう1つの方法は、「新規顧客」からの売上を増やすこと、だからです。
このように、売上は、2つの異なるアプローチで増やせるため、それぞれがうまくいっていいるのかをどかを理解するためには、「新規」と「既存」に分けて、売上を分けてモニターすることが重要です。
しかし、多くの場合、1行が1つの注文や決済を表すような売上データには、どの注文や決済が、新規顧客あるいは既存顧客によってもたらされているかの情報はありません。
そういったときには、データを加工して、それぞれの注文や決済が、データを加工して、新規顧客あるいは既存顧客から売上かどうかを判別するラベル(列)データに追加することで簡単に新規顧客と既存顧客の売上を可視化できるようになります。
そちらの詳しいやり方は、以下のリンクでノート形式で紹介していますので、ぜひご参考ください。
なお、営業にとって重要な指標とその作り方を紹介する動画も公開していますので、ぜひご参考ください!
今回の注文データを使って、カスタムRコマンドで新規顧客からの売上と既存顧客からの売上を計算したい場合、以下のRコードのサンプルをご参考ください。
# Step 1: 顧客ごとの注文回数を計算
mutate_group(
group_cols = c(`顧客ID` = "顧客ID"),
group_funs = c("none"),
sort_cols = c("注文日"),
sort_funs = c("none"),
`注文回数` = dplyr::dense_rank(`注文日`)
) %>%
# Step 2: 注文回数を計算した後に支払い日を月単位に変更
# - floor()を利用して集計したい単位で日付を切り捨てる
# - 週間(週ごと/週別)の新規顧客の売上や既存顧客からの売上を計算したいときには日付を「週」で切り捨てる: floor_date(日付列, unit = "week")
# - 月間(月ごと/月別)の新規顧客の売上や既存顧客からの売上を計算したいときには日付を「月」で切り捨てる。: floor_date(日付列, unit = "month")
# - 年間(年ごと/年別)の新規顧客の売上や既存顧客からの売上を計算したいときには日付を「年」で切り捨てる。: floor_date(日付列, unit = "year")
mutate(`注文日` = floor_date(`注文日`, unit = "month")) %>%
# Step 3: 月ごとに新規顧客からの売上と既存顧客からの売上を集計する
# - 今回はあらかじめ日付を「月」で切り捨てているので、顧客セグメントごとに月間(月ごと)の新規顧客からの売上と既存顧客からの売上を集計する
# - 日付を「年」で切り捨てている場合、年間(年ごと/年別)の新規顧客からの売上と既存顧客からの売上を集計する
# - 日付を「週」で切り捨てている場合、週間(週ごと/週別)の新規顧客からの売上と既存顧客からの売上を集計する group_by(注文日) %>%
summarize(
`新規顧客からの売上` = sum_if(`売上`, `注文回数` == 1),
`既存顧客からの売上` = sum_if(`売上`, `注文回数` >= 2)
)
なお、「新規顧客からの売上」と「既存顧客からの売上」を計算するためには、集計のステップで、グループごとに売上を集計する必要があります。
# Step 1: 顧客ごとの注文回数を計算
mutate_group(
group_cols = c(`顧客ID` = "顧客ID"),
group_funs = c("none"),
sort_cols = c("注文日"),
sort_funs = c("none"),
`注文回数` = dplyr::dense_rank(`注文日`)
) %>%
# Step 2: 支払い日を月単位に変更
# - floor()を利用して集計したい単位で日付を切り捨てる
# - セグメントごとに週間(週ごと/週別)の新規顧客の売上や既存顧客からの売上を計算したいときには日付を「週」で切り捨てる: floor_date(日付列, unit = "week")
# - セグメントごとに月間(月ごと/月別)の新規顧客の売上や既存顧客からの売上を計算したいときには日付を「月」で切り捨てる。: floor_date(日付列, unit = "month")
# - セグメントごとに年間(年ごと/年別)の新規顧客の売上や既存顧客からの売上を計算したいときには日付を「年」で切り捨てる。: floor_date(日付列, unit = "year")
mutate(`注文日` = floor_date(`注文日`, unit = "month")) %>%
# Step 3: セグメントごとに月間の新規顧客からの売上と既存顧客からの売上を集計する
# - 今回はあらかじめ日付を「月」で切り捨てているので、顧客セグメントごとに月間(月ごと)の新規顧客からの売上と既存顧客からの売上を集計する
# - 日付を「年」で切り捨てている場合、顧客セグメントごとに年間(年ごと)の新規顧客からの売上と既存顧客からの売上を集計する
# - 日付を「週」で切り捨てている場合、顧客セグメントごとに週間(週ごと)の新規顧客からの売上と既存顧客からの売上を集計する
group_by(注文日, 顧客セグメント) %>%
summarize(
`新規顧客からの売上` = sum_if(`売上`, `注文回数` == 1),
`既存顧客からの売上` = sum_if(`売上`, `注文回数` >= 2)