今日は、Exploratoryで、半角カナを全角カナに、または全角カナを半角カナに変換する方法を紹介します。

こちらの記事を元に、半角カナ・全角カナを変換する関数を以下に作成しました。

# オリジナルのコード: http://horihorio.hatenablog.com/entry/2015/01/29/001438

hankana2zenkana <- function(x, reverse=FALSE){
    # character変換
    if (!is.character(x)){ x <- as.character(x) }
    
    # 濁点、半濁点文字の置換
    dh <- c("ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ")
    dz <- c("ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ")
    for( i in 1:length(dz) ){
        if (!reverse) {
            x <- gsub(dh[i],dz[i],x)
        }
        else {
            x <- gsub(dz[i],dh[i],x)
        }
    }
    
    # 1bite文字の置換
    dh1 <- "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン。「」、・ヲァィゥェォャュョッー"
    dz1 <- "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン。「」、・ヲァィゥェォャュョッー"
    if (!reverse) {
        x <- chartr(dh1, dz1, x)
    }
    else {
        x <- chartr(dz1, dh1, x)
    }
    x
}

zenkana2hankana <- function(x) {
    hankana2zenkana(x, reverse=TRUE)
}

こちらの関数をExploratoryで使えるようにするために、スクリプトラベルの横の+ボタンから、スクリプトを作成します。

先ほどの関数の内容をスクリプトに入力して、保存ボタンをクリックします。

以下の様なメッセージが表示されれば、関数の登録は完了です。

例として、twitterから以下のようなテキストデータを取得してきてみました。

こちらのtext列のテキストの全角カナ部分を半角カナに変換してみましょう。

mutateステップに以下の式を入力します。

zenkana2hankana(text)

新しい列の名前をhankana_textとして作成してみます。

全角カタカナの部分が半角カタカナに変換されています。

逆にこれを全角カタカナに戻してみましょう。 以下の式をmutateステップに追加します。

hankana2zenkana(hankana_text)

新しい列名をzenkana_textとして作成してみましょう。

もとの全角カナにもどっているのが見て取れます。