一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第10回目は52問目~57問目を一つにまとめてみました。今回はコード化処理中心の問題です。
P-052: レシート明細データ(receipt.csv)の売上金額(amount)を顧客ID(customer_id)ごとに合計の上、売上金額合計に対して2,000円以下を0、2,000円より大きい金額を1に二値化し、顧客ID、売上金額合計とともに10件表示せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。
※出力データはcustomer_id順に並べること
※2値化フィールド名はsales_flgとする
P-053: 顧客データ(customer.csv)の郵便番号(postal_cd)に対し、東京(先頭3桁が100〜209のもの)を1、それ以外のものを0に二値化せよ。さらにレシート明細データ(receipt.csv)と結合し、全期間において売上実績のある顧客数を、作成した二値ごとにカウントせよ。
※郵便番号(postal_cd)2値化したフィールドはpostal_flgという名称とすること
P-054: 顧客データ(customer.csv)の住所(address)は、埼玉県、千葉県、東京都、神奈川県のいずれかとなっている。都道府県毎にコード値を作成し、顧客ID、住所とともに10件表示せよ。値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とすること。
※コード値を格納するフィールド名はprefecture_cdとすること
P-055: レシート明細(receipt.csv)データの売上金額(amount)を顧客ID(customer_id)ごとに合計し、その合計金額の四分位点を求めよ。その上で、顧客ごとの売上金額合計に対して以下の基準でカテゴリ値を作成し、顧客ID、売上金額合計とともに10件表示せよ。カテゴリ値は順に1〜4とする。
・最小値以上第1四分位未満 ・・・ 1を付与
・第1四分位以上第2四分位未満 ・・・ 2を付与
・第2四分位以上第3四分位未満 ・・・ 3を付与
・第3四分位以上 ・・・ 4を付与
※カテゴリ値を格納するフィールド名はpct_groupとする
※結果は顧客IDの昇順でソートすること
P-056: 顧客データ(customer.csv)の年齢(age)をもとに10歳刻みで年代を算出し、顧客ID(customer_id)、生年月日(birth_day)とともに10件表示せよ。ただし、60歳以上は全て60歳代とすること。年代を表すカテゴリ名は任意とする。
※年代を格納するフィールドはeraとする
P-057: 056の抽出結果と性別コード(gender_cd)により、新たに性別×年代の組み合わせを表すカテゴリデータを作成し、10件表示せよ。組み合わせを表すカテゴリの値は任意とする。
※サンプルの結果は、gender_cdとeraをそのままくっつけています(100の位がgender_cdで下二桁がeraです)
※新しいカテゴリデータのフィールド名はgender_eraとする
解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。
solutionファイルは次回添付します。
添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。
回答します。
今更ですが、Formulaツールで Bool値を数値として扱うと式が簡単になりますね。(True は -1 になるので符号を逆転する必要がありますが)
sales_flg = - ([amount] > 2000)
53問目
postal_flg = - (ToNumber(Left([postal_cd], 3)) >= 100 AND ToNumber(Left([postal_cd], 3)) <= 209)
54問目
prefecture_cd = Switch(Left([address], 1), Null(), "埼",11,"千",12,"東",13,"神",14)
55問目
pct_group = - ([amount] >= [Percentile_25]) - ([amount] >= [Percentile_50]) - ([amount] >= [Percentile_75]) + 1
56~57問目
era = FLOOR([age] / 10) * 10
era = IIF([era] > 60, 60, [era])
gender_era = ToString([gender_cd]) + ToString([era])
遅れていますね。😑
出来ました。以前より回答がすぐに思い浮かばなくなってきた気がします。。。
引き続き頑張ります。