欠損値/空白に1レコード上/下の値を置換する(SPSS Modeler データ加工逆引き5-15)

# 欠損値/空白に1レコード上/下の値を置換する

![スクリーンショット 2024-03-07 18.10.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a1c7c6d3-5e29-67c8-72c5-dfd993ca7c75.png)

## 1.想定される利用目的

・突発的な異常値が想定される欠損レコードの補間
・ログデータの特徴量作成のための整形

## 2.サンプルストリームのダウンロード

https://github.com/yoichiro0903n/blue/raw/main/missing_minus.str

## 3.サンプルストリームの説明

![スクリーンショット 2024-03-07 18.11.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b4864f30-b65a-2899-99a4-29b59650e1d2.png)

a.入力するデータは以下の通りです。
![スクリーンショット 2024-03-08 14.38.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fb62fbd5-8bbc-fb49-7c49-45bfe1a95795.png)

#### 空白を1レコード上の値で置換する

b.[置換]ノードを編集します。[置換]条件は[空白値とヌル]を選択し。@&#xFFF0;OFFSET(フィールド,1)でフィールドの1レコード上を参照します。
![スクリーンショット 2024-03-07 18.31.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d18ed57c-6799-4550-a127-3d5dcea04fac.png)

[プレビュー]します。
![スクリーンショット 2024-03-07 18.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fcfd82d7-cad2-03d9-7a7c-642965cd7ce5.png)

#### ダミー列を用意して空白を1レコード下の値で置換する

先のbの関数を@&#xFFF0;OFFSET(フィールド,-1)とすることを試しますが[リテラル先読みを使用できません]というエラーになるため、一度ダミーフィールドを設けて処理をします。
![スクリーンショット 2024-03-08 14.42.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6ae017b5-585a-ac0b-d339-8a56e5669f56.png)

c.[フィールド作成]ノードを編集します。値が空白の場合にはダミー列に@&#xFFF0;OFFSET(フィールド,-1)で1レコード下の値を記述します。
![スクリーンショット 2024-03-07 18.32.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4e9b16f1-f969-a2b6-6b46-8aa3ad80dc18.png)

[プレビュー]します。

![スクリーンショット 2024-03-07 18.33.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/870ac173-2a93-40e4-4819-1f932cfacfa8.png)

d.[置換]ノードを編集します。
![スクリーンショット 2024-03-07 18.33.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7c7a0bdd-985c-4861-9887-5325586c10a7.png)

e.[フィルター]ノードを編集します。
![スクリーンショット 2024-03-07 18.33.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9d58f9e7-16fa-3ca8-99cf-bfc04bdda2f8.png)

[テーブル]を実行します。
![スクリーンショット 2024-03-07 18.33.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d8059223-77f3-6718-e89c-cae831ac2bb6.png)

#### ソートを2回反転させ空白を1レコード下の値で置換する

f.[ソート]ノードを編集します。[INDEX]を降順ソートします。
![スクリーンショット 2024-03-07 18.34.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/99f2bb8d-c5fd-20d0-de98-b960119cedc7.png)

[プレビュー]します。
![スクリーンショット 2024-03-07 18.34.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/aa55dcc3-de21-08b4-313c-7febe969ce96.png)

g.[置換]ノードを編集します。bと同じ設定です。
![スクリーンショット 2024-03-07 18.34.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/801c13d5-b0f5-e4ad-a3fe-5e1a32b1aa4a.png)

[プレビュー]します。
![スクリーンショット 2024-03-07 18.34.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e3875126-c5fb-a303-5aec-81714fd0133f.png)

h.[ソート]ノードを編集します。[INDEX]を昇順ソートします。
![スクリーンショット 2024-03-07 18.35.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4ef76eea-e18a-a873-38a3-d7a4b335173f.png)

[テーブル]を実行します。
![スクリーンショット 2024-03-07 18.33.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/aef7eeae-d805-5a07-6bf3-9ad8d73e40b8.png)


#### 注意点

空白の置換を行う場合には事前に空白の定義をしておく必要があります。今回は入力ノードで設定してあります。

![スクリーンショット 2024-03-07 18.36.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1786ffcd-62c8-4603-9d51-50ea61630430.png)

![スクリーンショット 2024-03-07 18.37.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bf75fe93-fae0-ef99-59d1-eaf6184e9129.png)

## 4.参考情報

#### 空白に直前の値を代入する

https://qiita.com/416nishimaki/items/6375bb9475f258f4f376

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/private/4bf813e6cba84b2a1008