ウェブ解析にRの利用が増えてきていると思いますが、まだまだ普及しているとは言いがたいかと思います。これから、ウェブ解析にRを利用を考えている方にぜひ利用していただきたいRのデータフレームに関するコマンドを紹介します。データフレームの操作を押さえておくと、発展的な作業も行えるようになります。
以下のデータを例とします。
###データの準備##### #Point:文字列はshift + 2を押してダブルクウォンテーションで囲みます。 #Point:欠損値はNAで表します。 Day <- c("5月07日", "5月08日", "5月09日", "5月10日", "5月11日", "5月12日", "5月13日", "5月14日", "5月15日") Sales <- c(5, 2, NA, 4, NA, 5, 6, 7, 8) Cost <- c(2000, 400, 0, 800, 0, 2000, 2200, 2400, 2600) ######## ###データのデータフレームへの変換##### AnaDate <- data.frame(Day, Sales, Cost) ######## AnaDate Day Sales Cost 1 5月07日 5 2000 2 5月08日 2 400 3 5月09日 NA 0 4 5月10日 4 800 5 5月11日 NA 0 6 5月12日 5 2000 7 5月13日 6 2200 8 5月14日 7 2400 9 5月15日 8 2600
データフレーム処理関数の紹介
データの内容確認: summary
summary(AnaDate) Day Sales Cost 5月07日:1 Min. :2.000 Min. : 0 5月08日:1 1st Qu.:4.500 1st Qu.: 400 5月09日:1 Median :5.000 Median :2000 5月10日:1 Mean :5.286 Mean :1378 5月11日:1 3rd Qu.:6.500 3rd Qu.:2200 5月12日:1 Max. :8.000 Max. :2600 (Other):3 NA's :2
データ内の欠損値の数を確認: 合計のsumとNA値確認のis.na
sum(is.na(AnaDate)) [1] 2 #データ内に欠損値が2個あることが示されます。
指定した行、列の参照:カッコ演算子 [i, j]
*iが列、jが行となります。
データの2行目を抽出してみます。
AnaDate[complete.cases(AnaDate), ] Day Sales Cost 1 5月07日 5 2000 2 5月08日 2 400 4 5月10日 4 800 6 5月12日 5 2000 7 5月13日 6 2200 8 5月14日 7 2400 9 5月15日 8 2600 欠損値を含む3と5列目が削除されたデータが表示されます。
データフレームの結合: 横に結合するrbindと縦に結合するcbind
rbind(AnaDate, AnaDate) Day Sales Cost 1 5月07日 5 2000 2 5月08日 2 400 3 5月09日 NA 0 4 5月10日 4 800 5 5月11日 NA 0 6 5月12日 5 2000 7 5月13日 6 2200 8 5月14日 7 2400 9 5月15日 8 2600 10 5月07日 5 2000 11 5月08日 2 400 12 5月09日 NA 0 13 5月10日 4 800 14 5月11日 NA 0 15 5月12日 5 2000 16 5月13日 6 2200 17 5月14日 7 2400 18 5月15日 8 2600 cbind(AnaDate, AnaDate) Day Sales Cost Day Sales Cost 1 5月07日 5 2000 5月07日 5 2000 2 5月08日 2 400 5月08日 2 400 3 5月09日 NA 0 5月09日 NA 0 4 5月10日 4 800 5月10日 4 800 5 5月11日 NA 0 5月11日 NA 0 6 5月12日 5 2000 5月12日 5 2000 7 5月13日 6 2200 5月13日 6 2200 8 5月14日 7 2400 5月14日 7 2400 9 5月15日 8 2600 5月15日 8 2600
行または列に対しての一括処理: applyコマンド
関数内のmeanを変更することで様々な処理が可能となります。例では平均を計算しています。
#列に対する処理 apply(AnaDate[, 2:ncol(AnaDate)], 1, mean, na.rm=TRUE) [1] 1002.5 201.0 0.0 402.0 0.0 1002.5 1103.0 1203.5 1304.0 #行に対する処理 apply(AnaDate[, 2:ncol(AnaDate)], 2, mean, na.rm=TRUE) Sales Cost 5.285714 1377.777778
少しでも、あなたのウェブ解析が楽になりますように!!