SPSS Modelerにはreplaceなどの文字列関数はありますが、正規表現に対応していません。
正規表現を使うには以下の方法が考えられます。
- Rの拡張ノードを使う
- RDBの正規表現関数を使う
以下のようにCOMPANYという列の文字列から「株式会社」という文字列を除去してCOMPANYSHORTという列を追加したいと思います。
サンプルストリームとデータは以下です。
テスト環境
- Modeler 18.2.2
- Db2 Warehouse on Cloud
#1. Rの拡張ノードを使う
R拡張ノードでsubなどのRの正規表現関数を使います。
正規表現
#正規表現で「株式会社」を除去
COMPANYSHORT<-sub("株式会社","",modelerData$COMPANY)
#列の追加
modelerData<-cbind(modelerData,COMPANYSHORT)
#列定義
newcol<-c(fieldName="COMPANYSHORT",fieldLabel="",fieldStorage="string",fieldMeasure="",fieldFormat="",
fieldRole="")
modelerDataModel<-data.frame(modelerDataModel,newcol)
sub("株式会社","",modelerData$COMPANY)
で「株式会社」という文字列があったら除去しています。
参考
#2. RDBの正規表現関数を使う
R拡張ノードだとRDBで利用した場合SQLプッシュバックが効きません。
SQLプッシュバックを効かせたい場合は、RDBのREGEXP_REPLACEなどの正規表現関数を使います。以下のテストではDb2のSYSIBM.REGEXP_REPLACEを使いました。
正規表現
SYSIBM.REGEXP_REPLACE(COMPANY,'株式会社','')
参考
#3. 参考
Modelerのビルトイン関数でも*のようなワイルドカードは使えます。