曜日情報を整理する
まずはデータに曜日情報を追加します。
youbi1 <- weekdays(as.Date(sample$DATE))
as.Dateとweekdays関数を使うことで曜日情報を作成することができます。
head(sample$DATE)
head(youbi1)
と打ってみましょう。
2014/1/6は月曜日、2014/1/7は火曜日…となっています。おぉ。なんて簡単。自画自賛。
作成した曜日情報を元データに追加します。
sample2<-transform(sample,youbi1=youbi1)
head(sample2)
youbi1という名前で変数が追加されていますね。
では、曜日別に特徴を確認してみましょう。こんな時はtapplyを使うと便利です。
tapply(sample2$純広告,sample2$youbi1,mean)
「純広告のインプレッション」について、「youbi1」ごとに「mean」(平均値)を計算しなさい、という意味です。すると、
曜日別に平均値が出力されました!!
って、アレ? なんか変だな。これ、おいおい。
順番が火曜日、金曜日、月曜日、水曜日、土曜日、日曜日、木曜日って、なってますね。。。なんのこっちゃ。
ついでに、前回行ったsummaryも念のためやってみましょう。
by(sample2[2:5],sample2$youbi1,summary)
やっぱり曜日の順番が…アレです。
ここで諦めてはなりません。諦めたらそこでR終了です。曜日の前に数字をつけてあげて表示順序を見易くしてあげましょう。
youbi2=as.POSIXlt(sample$DATE)$wday
youbi2
上記のおまじないを入力すると、
と表示されて、youbi1と対応させると、月曜日=1、火曜日=2、水曜日=3、木曜日=4、金曜日=5、土曜日=6、0=日曜日となります。
筆者の個人的な趣味では土日は並んでいた方が見やすいと思いますので、ちょいと一工夫を。
youbi2 <- ifelse(youbi2==0, 7, youbi2)
解説しましょう!
ifelse([1],[2],[3])
[1]youbi2の数値が0つまり日曜日だったら、[2]0を7に置き換えて、[3]そうでなければそのままのyoubi2の数値を使いましょう、という意味です。これは、Excelのif関数に似ていますね。
youbi2
と入力して念のため確認します。
先ほど、0が入っていたところが7に変わっていますね。では、今作った数値と先ほどの曜日情報をくっつけましょう。
youbi=paste(youbi2,youbi1)
[3]=paste([1],[2])
これは[1]と[2]をくっつけて[3]="[1][2]"という新しい変数を作成するおまじないです。
head(youbi)
きちんと数値と曜日情報がくっついていますね。
sample3<-transform(sample,youbi=youbi)
head(sample3)
苦労して作成した数値付の曜日情報(youbi)を元データに追加できました!
tapply(sample3$純広告,sample3$youbi,mean)
先ほどは曜日の並びがバラバラでしたが、今度は大丈夫ですね!
しかし、、、う~ん。なんか地味かつメンドクサイですね。曜日ごとに平均値がサクッと計算できるのは確かに便利っちゃー便利ではありますが!
もうちょっと、ちゃちゃっとできる方法ないもんですかね。
簡単! 2015年2月10日「3つ」覚えて分析から視覚化まで即実践!Rでできるデータ分析講座開催
Rをインストールしたが、無骨なUIに「今日はこのへんで……」と、そっと閉じてしまった方にオススメです!
本講座では実機を使って「できるだけわかりやすく」グラフ化&データ分析をワークショップ形式で簡単に身に付けることができます。
