クレメンタインでワイルドカードを使う方法 [データサイエンス、統計モデル]
クレメンタインでワイルドカードを使う方法
クレメンタインのCLEM式で
issubstring(SUBSTRING, STRING)
というのがあるのだが、これは、ワイルドカードは使えない。
たとえば、
URL
という変数の中に
str1/str2/str3
という文字列があったとき、
str1*str3
というワイルドカード付きの文字列を抽出したい場合、
issubstring("str1*str3", URL)
と書いてもうまくいかないのだ。
では、どうすれば、良いかといえば、
issubstring(SUBSTRING, N, STRING)
を利用すれば、うまく処理ができる。
まず、失敗例がこれ。
issubstring("str3", issubstring("str1", URL), URL)
Nの部分は、0以上でないと、null を返してしまうので、処理上不具合が発生する。
そこで、
issubstring("str3", issubstring("str1", URL) + 1, URL)
と変更したのだが、これでは、
str1*str3
の抽出ではなく、
str3
の抽出になってしまい駄目である。
パズルのようだが、下記のように書けば、OKである。
issubstring("str3", issubstring("str1", URL) + 1, URL) * issubstring("str1", URL) > 0
str1 が含まれていなければ、後半部分が 0 になる。
また、str1 の後に str3 が含まれていなければ、 前半部分が 0 になる。
だから、
str1*str3
を抽出したことになるのだ。
ここで注意点として、
issubstring("str3", URL) * issubstring("str1", URL) > 0
としても、良さそうだが、これは、
str1*str3
でも、
str3*str1
でも、同じ判定になってしまうので、駄目である。
str1*str3
という、順番付きのワイルドカードを抽出する場合は、
issubstring("str3", issubstring("str1", URL) + 1, URL) * issubstring("str1", URL) > 0
と書かないといけない。
クレメンタインのCLEM式で
issubstring(SUBSTRING, STRING)
というのがあるのだが、これは、ワイルドカードは使えない。
たとえば、
URL
という変数の中に
str1/str2/str3
という文字列があったとき、
str1*str3
というワイルドカード付きの文字列を抽出したい場合、
issubstring("str1*str3", URL)
と書いてもうまくいかないのだ。
では、どうすれば、良いかといえば、
issubstring(SUBSTRING, N, STRING)
を利用すれば、うまく処理ができる。
まず、失敗例がこれ。
issubstring("str3", issubstring("str1", URL), URL)
Nの部分は、0以上でないと、null を返してしまうので、処理上不具合が発生する。
そこで、
issubstring("str3", issubstring("str1", URL) + 1, URL)
と変更したのだが、これでは、
str1*str3
の抽出ではなく、
str3
の抽出になってしまい駄目である。
パズルのようだが、下記のように書けば、OKである。
issubstring("str3", issubstring("str1", URL) + 1, URL) * issubstring("str1", URL) > 0
str1 が含まれていなければ、後半部分が 0 になる。
また、str1 の後に str3 が含まれていなければ、 前半部分が 0 になる。
だから、
str1*str3
を抽出したことになるのだ。
ここで注意点として、
issubstring("str3", URL) * issubstring("str1", URL) > 0
としても、良さそうだが、これは、
str1*str3
でも、
str3*str1
でも、同じ判定になってしまうので、駄目である。
str1*str3
という、順番付きのワイルドカードを抽出する場合は、
issubstring("str3", issubstring("str1", URL) + 1, URL) * issubstring("str1", URL) > 0
と書かないといけない。