縦持ち変換
横に並んだ列を、縦に積み直します。 月ごとに列が分かれている表を「月」と「値」の 2 列にまとめ、集計やグラフで扱える形にします。クロス集計表を縦持ちに戻す(アンピボット)操作です。
逆向き(縦を横に広げる)はクロス集計(横持ち変換)です。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | キー列 + 列名の列 + 値の列 に組み替えたデータ |
Spark エンジンでも動きます。
設定項目
- キー列を選択必須
- そのまま残す列。複数選べます。ここで選ばなかった列が縦に積まれます。
オプション
- キー列以外の列名の挿入先を入力
- 元の列名が入る列の名前。既定は
列名です。 - 中の値の挿入先を入力
- 元の値が入る列の名前。既定は
値です。 - 中の値が0もしくは欠損値の場合行を削除する
- 既定は off。on にすると、値が 0 または空欄の行を出力から外します。
変換のしかた
キー列に選ばなかった列が、すべて縦に積まれます。
入力
| 店舗 | 1月 | 2月 | 3月 |
|---|---|---|---|
| 渋谷 | 120 | 140 | 90 |
| 新宿 | 98 | 110 | 130 |
設定 — キー列 店舗
出力
| 店舗 | 列名 | 値 |
|---|---|---|
| 渋谷 | 1月 | 120 |
| 新宿 | 1月 | 98 |
| 渋谷 | 2月 | 140 |
| 新宿 | 2月 | 110 |
| 渋谷 | 3月 | 90 |
| 新宿 | 3月 | 130 |
- 列の並びは キー列 → 列名 → 値 です
- 行数は 元の行数 × 積まれる列数 になります
- 行は積まれた列ごとにまとまって並びます。元の行の順ではありません
キー列にすべての列を選ぶと、入力がそのまま出ます。 積む列が残らないので、列名 と 値 の列もできません。
積む列の型が混ざるとき
型の違う列を一緒に積むと、値 の列は文字列型になります。 数値の列と文字列の列を同時に積んだ場合などです。文字列になると合計や平均が掛けられなくなるので、次のどちらかにします。
- 混ぜたくない列をキー列に入れて残す
- 先に列選択/削除で外しておく
積む列の型がすべて同じなら、値 の列も元の型のまま出ます。
0 と空欄を落とす
「中の値が0もしくは欠損値の場合行を削除する」を on にすると、値が入っていない組み合わせを落とせます。
商品 × 月のように組み合わせが多いデータでは、行数が大きく減ります。集計にもグラフにも影響しない行なので、落としておくと後が軽くなります。
エラーと対処
選んだ列が見つからない
キー列を選択で指定した列が入力データにないとき、またはどの条件にも 1 列も当たらないとき。前の処理で列名が変わった場合にも出ます。
対象の列が存在しません。
直し方 — キー列を選び直してください。列名が変わりうるデータでは、名前に頼らない選び方(型で選ぶ・前方一致)に変えると壊れにくくなります。
よく使う例
1. 月別の列を縦にする
お題 — 1月 2月 3月 と列が分かれた表を、グラフで使える形にしたい
入力
| 店舗 | 1月 | 2月 |
|---|---|---|
| 渋谷 | 120 | 140 |
| 新宿 | 98 | 110 |
設定 — キー列 店舗、列名の挿入先 月、値の挿入先 売上
出力
| 店舗 | 月 | 売上 |
|---|---|---|
| 渋谷 | 1月 | 120 |
| 新宿 | 1月 | 98 |
| 渋谷 | 2月 | 140 |
| 新宿 | 2月 | 110 |
月 を横軸、売上 を縦軸、店舗 を系列にすると、そのまま折れ線グラフになります。
2. アンケートの回答を縦にする
お題 — 設問ごとに列が分かれた回答データを、設問別に集計したい
入力
| 回答者ID | Q1 | Q2 |
|---|---|---|
| R001 | 4 | 2 |
| R002 | 5 | 3 |
設定 — キー列 回答者ID、列名の挿入先 設問、値の挿入先 回答
出力
| 回答者ID | 設問 | 回答 |
|---|---|---|
| R001 | Q1 | 4 |
| R002 | Q1 | 5 |
| R001 | Q2 | 2 |
| R002 | Q2 | 3 |
設問が増えても列を足すだけで済み、データ集計の設定は変わりません。
3. 空の組み合わせを落とす
お題 — 商品 × 月の表で、売れていない月の行が邪魔
入力
| 商品 | 1月 | 2月 |
|---|---|---|
| A | 100 | 0 |
| B | 400 |
設定 — キー列 商品、「中の値が0もしくは欠損値の場合行を削除する」を on
出力
| 商品 | 列名 | 値 |
|---|---|---|
| A | 1月 | 100 |
| B | 2月 | 400 |
off なら 4 行すべてが残ります。
4. 複数のキーを残す
お題 — 店舗と担当者を残したまま、月の列を縦にしたい
入力
| 店舗 | 担当者 | 1月 | 2月 |
|---|---|---|---|
| 渋谷 | 田中 | 120 | 140 |
設定 — キー列に 店舗 と 担当者 の 2 つ
出力
| 店舗 | 担当者 | 列名 | 値 |
|---|---|---|---|
| 渋谷 | 田中 | 1月 | 120 |
| 渋谷 | 田中 | 2月 | 140 |
5. 縦にしてから集計する
お題 — 月ごとに列が分かれた表から、月別の合計を出したい
入力
| 店舗 | 1月 | 2月 |
|---|---|---|
| 渋谷 | 120 | 140 |
| 新宿 | 98 | 110 |
設定 — キー列 店舗、列名の挿入先 月、値の挿入先 売上。そのあとデータ集計でキー列 月、関数「合計」、集計対象列 売上
出力
| 月 | 売上_合計 |
|---|---|
| 1月 | 218 |
| 2月 | 250 |
6. 縦にしたデータを横に戻す
お題 — 縦に積んだデータを、元の表の形に戻したい
入力
| 店舗 | 列名 | 値 |
|---|---|---|
| 渋谷 | 1月 | 120 |
| 新宿 | 1月 | 98 |
| 渋谷 | 2月 | 140 |
設定 — クロス集計(横持ち変換)で、縦に展開する列 店舗、横に展開する列 列名、関数「集計しない」、対象列 値
出力
| 店舗 | 1月 | 2月 |
|---|---|---|
| 渋谷 | 120 | 140 |
| 新宿 | 98 |