このページは解答編です。
↓ネ
↓タ
↓バ
↓レ
↓防
↓止
答えと解説
設問はこちらでした。
P-034: レシート明細データ(receipt.csv)に対し、顧客ID(customer_id)ごとに売上金額(amount)を合計して全顧客の平均を求めよ。ただし、顧客IDが”Z”から始まるものは非会員を表すため、除外して計算すること。
解答ワークフローは以下のようになります。
今回は、集計ツールとフィルターツールを使った基礎的な問題ですが、合計を求めてから平均を取るため、2回集計ツールを使う必要があります。
まず、合計、平均を計算するということなので、データ型を変える必要があります。いつものようにセレクトツールで型を変えていきましょう。ついでに不要な項目を削除します。
次に、customer_idが「Z」で始まるレコードは除外して計算するとのことなので、フィルターツールを使います。これも以前の問題(10日目)で経験済みかと思いますが、除外の場合はカスタムフィルターにてStartsWith関数を使います。単にStartsWithだと「始まるもの」、ということになるので、先頭に「NOT」もしくは「!」を付けます。
!StartsWith([customer_id], "Z")
次に集計ツールを使ってcustomer_idでグループ化し、amountの平均を取ります。設定は以下の通りです。
customer_idを選択し、追加ボタンからグループ化を選択します。次に、amountを選択し、追加ボタンから合計を選択します。
これで、顧客ID(customer_id)ごとに売上金額(amount)の合計が得られます。あとは、全体の平均を取ります。設定は以下のような形となり、「Sum_amount」(売上金額の合計)を選択し、追加ボタンのドロップダウンメニューから「平均」を選択します。
以上で完了です。
まとめ
今回は素直な問題ですが、今回のようにグループごとの平均というのは一度に出せず、まず合計してから平均という形を取るため、2回集計ツールを使う必要があります。
コメント