新規顧客の数や既存顧客の数を集計する方法

売上や注文データには通常、顧客が何回目(何日目)の注文、あるいは支払いをしたのかという情報が含まれていないため、新規顧客(初回購入者)と既存顧客(複数回購入者)を区別して集計することが難しい場合があります。

特に、同じ日に複数の商品を購入した場合、注文明細が複数行に分かれるようなデータでは、単純な集計では適切な結果を得られない場合があります。

Exploratoryでは、表計算機能を使用して、各顧客の注文に対して時系列順にランク(注文回数)を付け、そのランク情報をもとに新規顧客(注文回数=1)と既存顧客(注文回数>=2)を区別して集計することで新規顧客の数や、既存顧客の数を集計できます。

ここからは実際に、新規顧客の数や既存顧客の数を集計する方法を紹介します。

今回は1行が1つの注文明細を表し、列には顧客ID、注文日などの情報を持つデータを利用します。同じ日に複数の商品を購入した場合は、複数行にわたってデータが記録されています。

顧客ごとの注文回数を計算する

まず、各顧客の注文回数を計算するために表計算機能を使用します。

顧客ごとにデータをグループに分けて、注文回数の列を追加したいので、「顧客ID」の列ヘッダーメニューから「表計算を作成」を選択します。

表計算のためのダイアログが表示されたら、グループに「顧客ID」が自動的に選択されていることを確認し、値に「注文日」を選択します。

表計算の設定ダイアログが開いたら、計算のタイプには「ランク」を選択し、ランクの種類は「Denseランク」を選択し、並び順が「昇順」になっていることを確認し、OKボタンをクリックします。

なお、ランクの種類にDenseランクを選択することで、同じ日の注文には同じランキングが付与されるようになります。

元のデータを「注文日」の古い順から新しい順にソートをしたい場合、「計算前にデータを並び替える」にチェックを入れ、並び替える列として「注文日」を選択して昇順に設定します。

最後に列名を変更するために値の編集ボタンをクリックし、「列名を指定する」にチェックを入れて、「注文回数」と入力し、実行ボタンをクリックします。

これで顧客ごとに注文回数の列が追加されました。

月ごとの新規顧客の数を集計する

次に、月ごとの顧客数を集計します。

「注文日」の列ヘッダーメニューから「集計」ボタンをクリックします。

集計のダイアログが開いたら、グループには「注文日」を選択し、単位を「月」に設定します。

次に月ごとの新規顧客数を集計するために、値に「顧客ID」を選択し、集計関数には「条件に合った一意の値の数(COUNT_UNIQUE_IF)」を選択します。

条件設定ダイアログが表示されたら、列に「注文回数」、演算子に「等しい」、値に「1」を入力します。

これにより注文回数が1回の顧客の一意な値の数、すなはち、新規顧客の数が集計されるようになります。

新しい列名に「新規顧客数」と入力します。

これで月ごとの新規顧客数を集計することができます。

月ごとの既存顧客の数を集計する

次に既存顧客の数を集計します。

値に「顧客ID」を選択し、集計関数には再び「条件に合った一意の値の数(COUNT_UNIQUE_IF)」を選択します。

条件設定ダイアログが表示されたら、列に「注文回数」、演算子に「以上」、値に「2」を入力します。これにより注文回数が2回以上の顧客のみ、すなはち、既存顧客の数が集計されるようになります。

新しい列名に「既存顧客数」と入力して実行します。

これで月ごとの顧客数、新規顧客数、既存顧客数がすべて集計できました。

新規顧客の数の集計方法(Rコード)

注文データの場合

今回の注文データをつかて、カスタムRコマンドで新規顧客数を集計したい場合、以下のRコードのサンプルをご参考ください。

# Step 1: 顧客IDごとに注文回数を計算
mutate_group(
  # 顧客IDでグループ化
  group_cols = c(`顧客ID` = "顧客ID"),
  group_funs = c("none"),
  # 注文日でソート
  sort_cols = c("注文日"),
  sort_funs = c("none"),
  # 各顧客の注文回数を注文日の順序(ランキング)をもとに計算(1回目、2回目...)
  `注文回数` = dplyr::dense_rank(注文日)
) %>%

# Step 2: 月ごとに新規顧客数を集計
summarize_group(
  # 注文日でグループ化
  group_cols = c(`注文日` = "注文日"),
  group_funs = c("rtomon"),
  # その日に初めて購入した顧客数を計算
  `新規顧客数` = count_unique_if(顧客ID, 注文回数 == 1)
)

既存顧客の数の集計方法(Rコード)

注文データの場合

今回の注文データをつかて、カスタムRコマンドで既存顧客の数を集計したい場合、以下のRコードのサンプルをご参考ください。

# Step 1: 顧客IDごとに注文回数を計算
mutate_group(
  # 顧客IDでグループ化
  group_cols = c(`顧客ID` = "顧客ID"),
  group_funs = c("none"),
  # 注文日でソート
  sort_cols = c("注文日"),
  sort_funs = c("none"),
  # 各顧客の注文回数を注文日の順序(ランキング)をもとに計算(1回目、2回目...)
  `注文回数` = dplyr::dense_rank(注文日)
) %>%

# Step 2: 月ごとに既存顧客の数を集計
summarize_group(
  # 注文日でグループ化
  group_cols = c(`注文日` = "注文日"),
  group_funs = c("rtomon"),
  `既存顧客数` = count_unique_if(顧客ID, 注文回数 >= 2)
)
Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio