◆INデータのレイアウト
顧客NOとその属性についてのトランザクションがあります。(参照:sample.xlsxのINシート)
実際のデータは300万行、15カラム程度あります。
顧客NO | ペット名 | 顧客性別 | 顧客年代 | 顧客年収 | 顧客職業 | ペット数 |
100 | パンダ | 男性 | 20 | 200-400万円 | 会社員 | 2 |
100 | トラ | 男性 | 20 | 200-400万円 | 会社員 | 1 |
100 | ネコ | 男性 | 20 | 200-400万円 | 会社員 | 1 |
200 | ネコ | 女性 | 50 | 1000万円以上 | 会社員 | 1 |
300 | イヌ | 男性 | 40 | 1000万円以上 | 社長 | 5 |
300 | トラ | 男性 | 40 | 1000万円以上 | 社長 | 3 |
300 | ネコ | 男性 | 40 | 1000万円以上 | 社長 | 2 |
300 | パンダ | 男性 | 40 | 1000万円以上 | 社長 | 1 |
◆欲しいOUTPUT
ペット名に対する各顧客属性の割合(参照:sample.xlsxのOUTシート)
ペット名 | 男性% | 女性% | 20代% | 40代% | 50代% | 200-400万円% | 1000万円以上% | 会社員% | 社長% |
パンダ | 100 | 0 | 50 | 50 | 0 | 50 | 50 | 50 | 50 |
イヌ | 100 | 0 | 0 | 100 | 0 | 0 | 100 | 0 | 50 |
ネコ | 66 | 33 | 33 | 33 | 33 | 33 | 66 | 66 | 33 |
トラ | 100 | 0 | 50 | 50 | 0 | 50 | 50 | 50 | 50 |
これまで試したのは、クロスタブで各項目を一つ一つ集計していました。
とても非効率的なのでより良い方法があれば教えてください!
解決済! 解決策の投稿を見る。
@espessco さん
ペット名を軸に縦持ちデータに変換してから、項目ごとにバッチマクロで集計し、最後にクロスタブ、という方法でやってみました。言葉で説明するのは難しいところがあるので、添付のワークフローを実行いただけると、分かりやすいかと思います。
@espessco さん
マクロを使わないバージョンを作りました。
一旦すべて縦持ちにした後に、各項目ごとのカウント、各カテゴリごとのカウントをとって結合後、割合にしてから横持ちにしています。
詳細は添付ファイルをご覧ください。
ちなみに、ペット数を合計するのではなく、単にレコードをカウントしていますが、良いでしょうか?(出力結果に合わせています)。
@gawa さん
@AkimasaKajitani さん
お忙しい中ありがとうございます!!
両方の方法でトライしましたがいけました!
ただ、トランザクションが3000万件を超えたあたりから動かなくなったので
間にサンプリングを入れて実行しました。
とても悩んでいたところでしたので、大変助かりました!ありがとうございました。