IBM SPSS Modeler(旧Clementine)関数 "issubstring" の落とし穴 [データサイエンス、統計モデル]
IBM SPSS Modeler(旧Clementine)の関数に
・issubstring(SUBDTRING, STRING)
・issubstring(SUBDTRING, N, STRING)
があります。
使い方として、文字列の中にあるキーワードが入っているかどうか?の調査に使います。
・issubstring(SUBDTRING, STRING)の使い方
例として、流入キーワードの中に "BCD" が含まれているかどうか?をチェックしたい。
issubstring("BCD", 流入キーワード)
大文字と小文字を区別するので、ABCDEFがヒットします。
そして、BCDは、2文字目からスタートするので、2となります。
それ以外は、0です。
条件抽出でそのキーワードが含まれているかどうか引っ張ってくる場合、
issubstring("BCD", 流入キーワード) > 0
と書いても良いですし、> 0 を書かなくて、
issubstring("BCD", 流入キーワード)
と書いても大丈夫です。
・issubstring(SUBDTRING, N, STRING)の使い方
例として、流入キーワードの中に "BC*D" が含まれているかどうか?をチェックしたい。
です。
BCとDの間に文字列があってもなかっても良いです。
issubstring("D", issubstring("BC", 流入キーワード), 流入キーワード)
↑
この書き方は実はあまりよろしくないです。
"BC*D"が含まれている場合は、その開始位置を返してくれます。
"BC"だけの場合は、0を返してくれます。
"BC"がない場合、、、issubstring("D", 0, 流入キーワード) となるので、これは、nullになります。
含まれていないなら0でもnullでもいいじゃないかってことなんですが、
条件抽出をする場合に、変なことが起こります。
【BCD > 0】を含める場合、
【BCD > 0】を破棄する場合、
となって、nullがどちらにも出てきません。
この問題を解決する方法としては、
issubstring("D", issubstring("BC", 流入キーワード) + 1, 流入キーワード)
と、"+ 1"を追記してあげれば、OKです。
結果は、
このように、文字列が含まれる場合は、開始位置を返し、含まれない場合は、0を返してくれます。
・issubstring(SUBDTRING, STRING)
・issubstring(SUBDTRING, N, STRING)
があります。
使い方として、文字列の中にあるキーワードが入っているかどうか?の調査に使います。
・issubstring(SUBDTRING, STRING)の使い方
issubstring(SUBDTRING, STRING)
STRINGにSUBSTRINGがあるかどうかを検索します。見つかった場合、その開始位置の添え字を返します。それ以外の場合は、0を返します。
例として、流入キーワードの中に "BCD" が含まれているかどうか?をチェックしたい。
issubstring("BCD", 流入キーワード)
大文字と小文字を区別するので、ABCDEFがヒットします。
そして、BCDは、2文字目からスタートするので、2となります。
それ以外は、0です。
条件抽出でそのキーワードが含まれているかどうか引っ張ってくる場合、
issubstring("BCD", 流入キーワード) > 0
と書いても良いですし、> 0 を書かなくて、
issubstring("BCD", 流入キーワード)
と書いても大丈夫です。
・issubstring(SUBDTRING, N, STRING)の使い方
issubstring(SUBDTRING, N, STRING)
STRINGのN番目の文字からSUBSTRINGの検索を開始します。見つかった場合、その開始位置の添え字を返します。
例として、流入キーワードの中に "BC*D" が含まれているかどうか?をチェックしたい。
です。
BCとDの間に文字列があってもなかっても良いです。
issubstring("D", issubstring("BC", 流入キーワード), 流入キーワード)
↑
この書き方は実はあまりよろしくないです。
"BC*D"が含まれている場合は、その開始位置を返してくれます。
"BC"だけの場合は、0を返してくれます。
"BC"がない場合、、、issubstring("D", 0, 流入キーワード) となるので、これは、nullになります。
含まれていないなら0でもnullでもいいじゃないかってことなんですが、
条件抽出をする場合に、変なことが起こります。
【BCD > 0】を含める場合、
【BCD > 0】を破棄する場合、
となって、nullがどちらにも出てきません。
この問題を解決する方法としては、
issubstring("D", issubstring("BC", 流入キーワード) + 1, 流入キーワード)
と、"+ 1"を追記してあげれば、OKです。
結果は、
このように、文字列が含まれる場合は、開始位置を返し、含まれない場合は、0を返してくれます。
お久しぶりです。
今後、活用したいです。
by misa10 (2011-05-25 19:47)
> misa10さん
お久しぶりです。
いろいろ活用してください~
by Minky (2011-05-26 21:58)