データを行方向にずらす(ラグ操作)
値を上下にずらした列を作ります。前日の売上を同じ行に持ってきて前年比や差を出す、前回の購入日と比べる、といった使い方をします。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
Spark エンジンでも動きます。
行の数は変わりません。 対象列 × ずらし幅の数だけ列が増えます。元の列は残ります。
設定項目
- 処理対象列を選択
- ずらす列。型の制限はありません。複数選べます。
- ずらし幅を設定必須
- 何行ずらすか。既定は
1。カンマ区切りで複数指定できます。
オプション
- ずらす方向の設定
- 上から下にずらす(既定)か下から上にずらす。
- 発生した欠損値を置換する
- ずらした結果できる空欄に入れる値。
- 特定の列で並べ替えてから処理する
- on にすると、並べ替えの組が出ます。既定は off です。
- 対象列を選択
- 並べ替えに使う列。組はいくつでも足せます。
- 並べ替えタイプを選択
- 昇順(既定)か降順。
- グループ内で処理を実施する
- グループごとにずらします。グループをまたいで値が流れ込みません。複数選べます。
増える列の名前
ずらし幅<幅>_<元の列名> という列が増えます。ずらし幅に 1,2,3 を指定して 売上 を選ぶと、ずらし幅1_売上 ずらし幅2_売上 ずらし幅3_売上 の 3 列ができます。
ずらし幅の書き方
| 書き方 | できる列 |
|---|---|
1 | 1 本 |
1,2,3 | 3 本 |
1-3 | 3 本(1 2 3) |
1,5-7 | 4 本(1 5 6 7) |
同じ数を 2 回書いても列は 1 本です。 重なりは取り除かれ、小さい順に並べ替えてから列が作られます。
方向の意味
| 方向 | 入る値 |
|---|---|
| 上から下にずらす(既定) | 1 つ上の行の値(=前の値) |
| 下から上にずらす | 1 つ下の行の値(=次の値) |
ずらした結果、端の行は空欄になります。発生した欠損値を置換するに値を入れると、その空欄だけが埋まります。
グループを指定する理由
顧客ごとの「前回の購入日」を出すときにグループを指定しないと、別の顧客の値が入ってきます。グループに 顧客ID を指定すれば、顧客が変わるところで空欄になります。
行の並び順
| 設定 | 出力の行順 |
|---|---|
| どちらも使わない | 入力のまま |
| グループだけ | 入力のまま |
| 並べ替えだけ | 指定した並べ替えの順 |
| 並べ替えとグループの両方 | グループのキー順に並び、その中が指定した並べ替えの順 |
並べ替えとグループを両方使うと、入力と行順が変わります。元の順に戻したいときは、あとで行の並べ替えをつないでください。
エラーと対処
ずらし幅の書き方が違う
数字として読めない字が入っているときに出ます。
ずらし幅は整数をカンマ区切りで入力してください。
直し方 — 1 や 1,2,3 のように、整数をカンマで区切って書いてください。
置換する値が日付として読めない
日付・日付時間の列に対して、発生した欠損値を置換するに日付として読めない値を入れたときに出ます。
置換する値を
{{dtype_label}}型に変換できませんでした。
{{dtype_label}} には列の型が入ります(日付 / 日付時間)。
直し方 — 2024-04-01 のように日付として読める形で入れてください。
対象列を選んでいない
処理対象列を選択が空のまま実行したときに出ます。
対象の列が選択されていません。
直し方 — 対象列を選んでください。
選んだ列が入力にない
前の処理で列名を変えた・列を消したときに出ます。どの条件にも 1 列も当たらないときも同じです。
対象の列が存在しません。
直し方 — 対象列を選び直してください。
よく使う例
1. 前日との差を出す
日々の売上の増減を見たいとき。
入力
| 日付 | 売上 |
|---|---|
| 2024-04-01 | 100 |
| 2024-04-02 | 150 |
| 2024-04-03 | 80 |
設定
| 設定項目 | 値 |
|---|---|
| 処理対象列を選択 | 売上 |
| ずらし幅を設定 | 1 |
| 特定の列で並べ替えてから処理する | on |
| 対象列を選択 | 日付 |
| 並べ替えタイプを選択 | 昇順 |
出力 — ずらし幅1_売上 が 空欄 / 100 / 150 になります。このあと数値列同士の演算で 売上 − ずらし幅1_売上 を作れば、増減が出ます。
2. 顧客ごとに前回の購入日を出す
購入の間隔を調べたいとき。
入力
| 顧客ID | 購入日 |
|---|---|
| C-1 | 2024-01-10 |
| C-1 | 2024-03-02 |
| C-2 | 2024-02-14 |
設定
| 設定項目 | 値 |
|---|---|
| 処理対象列を選択 | 購入日 |
| ずらし幅を設定 | 1 |
| 特定の列で並べ替えてから処理する | on(対象列 購入日、昇順) |
| グループ内で処理を実施する | 顧客ID |
出力 — ずらし幅1_購入日 が 空欄 / 2024-01-10 / 空欄 になります。顧客が変わるところで空欄に戻ります。
3. 1 期前・2 期前をまとめて作る
過去 3 期分を同じ行に並べて、回帰の説明変数にしたいとき。
入力
| 期 | 売上 |
|---|---|
| 1 | 100 |
| 2 | 150 |
| 3 | 80 |
| 4 | 120 |
設定
| 設定項目 | 値 |
|---|---|
| 処理対象列を選択 | 売上 |
| ずらし幅を設定 | 1,2,3 |
出力 — ずらし幅1_売上 ずらし幅2_売上 ずらし幅3_売上 の 3 列が増えます。4 期目の行には 80 / 150 / 100 が並びます。
4. 次の行の値を同じ行に持つ
「このあと何が起きたか」を同じ行で見たいとき。
入力
| 時刻 | 状態 |
|---|---|
| 10:00:00 | 待機 |
| 10:01:00 | 実行 |
| 10:02:00 | 失敗 |
設定
| 設定項目 | 値 |
|---|---|
| 処理対象列を選択 | 状態 |
| ずらし幅を設定 | 1 |
| ずらす方向の設定 | 下から上にずらす |
出力 — ずらし幅1_状態 が 実行 / 失敗 / 空欄 になります。
5. 端の空欄を 0 にする
1 行目が空欄だと、そのあとの計算が全部空欄になってしまうとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| 処理対象列を選択 | 売上 |
| ずらし幅を設定 | 1 |
| 発生した欠損値を置換する | 0 |
出力 — ずらし幅1_売上 が 0 / 100 / 150 になります。1 行目の差は「100 − 0 = 100」になるので、増減として読まないよう注意してください。