2017年8月27日日曜日

R言語:「stringr」パッケージでレビューデータの加工が簡単(その2)

前回、「stringr」パッケージを使って宿泊レビューデータの加工プロセスをまとめました。

R言語:「stringr」パッケージでレビューデータの加工が簡単。
http://sapporomkt.blogspot.jp/2017/08/rstringr.html

「よし、これでテキストマイニングできるぞー」と思ったら・・・「宿泊利用目的」のカラムに「宿泊年月」データが混入orz...
まぁ、ソーシャルデータのテキストマイニング前処理にはよくある話ですね。


今回は、地味ですが、上記で混在している「宿泊年月」データを「stringr」パッケージを使って正しいカラムに移動する手順をご紹介します。

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


「if文無しでもいけちゃう」ソースコードのご紹介


最初、苦労したのは下記仕様への対応でした。
1.「宿泊年月」が混在している行だけ特定する
2. 上記1の「宿泊年月」データのみ、正しい「宿泊年月」カラムにコピーする
3. 移動後に不要となった上記1の「宿泊年月」データを削除する

if文での関数化も検討しましたが、「Rでif文はあまり使うな」的なことが多く書いていたので「stringr」パッケージだけでやってみました。
※分析データの読み込みなどは、前回エントリーをご覧ください。

# purpose1に年月が入ったセルにフラグを立てます。
# str_detect関数は、( )内の第1引数である読み込みデータの中で、第2引数に指定した検索条件に合致した場合にフラグ値を返します。
# " "内は正規表現が利用できます。文頭から文末にかけて、「数字4文字+年と数字2文字+2文字」だけが入力された文のみ検索条件にします。
hotel2.dat$flg <- str_detect(hotel2.dat$purpose1, "^\\d{4}年\\d{2}月$")

# 上記のフラグ立てが間違っていないことを確認してください。問題なければ、上記に該当する行番号を先ほどのコードを「↑」キーで呼び出して、下記のように書き換えてください。
# 「which」は「TRUE」に該当する行番号だけを取得してくれます。
okikae_num <- which(str_detect(hotel2.dat$purpose1, "^\\d{4}年\\d{2}月$"))

# purpose3に混在した年月情報を移動します。
hotel2.dat[c(okikae_num),"purpose3"] <- hotel2.dat[c(okikae_num),"purpose1"]

# 年月だけのセルにnullを入れます。str_replace関数は、名称から推察される通り「置換」です。
hotel2.dat$purpose1 <- str_replace(hotel2.dat$purpose1,"^\\d{4}年\\d{2}月$","")

# クロス集計でおかしなデータがないか確認します。
rpivotTable(hotel2.dat)


表側にある「purpose1」(宿泊目的)から年月が消えています。表頭は「満足度」ですが、N数が少ないものの、「その他」における低い満足度(1が最低)がやや多いのが面白いですね。

ご紹介は以上です。おそらくもっと上手いやり方があるような気もしますが、if文無しで数行のコードでこのようなデータ加工ができるのは便利ですね。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

0 件のコメント:

コメントを投稿

Google+ Followers