dplyrでmutateにifelseが使えるんすねって話。

取り敢えず時間がないけどブログ更新したいと思ったらdplyr書いておけば良いやって思っているサーモン安井です。

最近DFP使って自分のブログに自社広告して自分の広告出してるんですけど全然表示されません・・・

impは計測されてるのに・・・

 

OLYMPUS DIGITAL CAMERA

 

さて、今回はmutate使ってデータをカテゴライズしてーぞって話です。

mutateで変数を追加出来るんですけど、その際にifelseを使うと条件によってその変数の値を定義する事が出来ます。

例えば曜日の有る時系列データなんかを扱っている場合、

mutate( mon = ifelse(youbi == “月曜日”, 1, 0 ) 

とかってやれば月曜日の時だけ1でそれ以外の曜日では0が入る変数を追加する事が出来ます。

もう結果をいちいちコピペするの面倒なのでknitr使ってみました。

irismutate

irisのデータにSpeciesを元にしてカテゴリーっぽい物を追加しています。

二つ目ではifelseを重ねています。

data %>% mutate(category = ifelse(Species == “setosa”, “A”, ifelse(Species == “virginica”, “B”, “C”)))

これによって一つ目の条件にあわなかった物を二つ目の条件と照合させる事が出来ます。

二つの変数の組み合わせによってカテゴリー等が定義される場合なんかには結構使えます。

対応表みたいな物を作ってjoinさせちゃえば良いじゃんって最初は思っていたのですが、最近joinするとRstudioが落ちやすい気がしているのでなるべく避けようと海外サイトフラフラしてたらこの方法見つけました。

ログデータを集計する時に特定の条件に適合したデータの個数とかをカウントして説明変数とかに使ったりするので重宝してます。

でももっと便利な方法あるなら知りたいので誰か知ってたら教えて下さい。

 

追記

裏 RjpWikiさんで突っ込みを頂いていました。

iris$category = factor(iris$Species, levels=c(“setosa”, “virginica”, “versicolor”), labels=LETTERS[1:3])

の方が,分かりやすいと思います。分類が10個になったら,ifelse を 9 層にするおつもりですか?

ご指摘ありがとうございます、その通りですね。

factor作りたいのであればこういった方式で良いと思います。

これmutateに突っ込めるので、

data %>% mutate(category = factor(Species, levels=c(“setosa”, “virginica”, “versicolor”), labels=LETTERS[1:3]))

とかが出来ますね。

カテゴリー: R パーマリンク

コメントを残す