ウェブ解析に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
少しでも、あなたのウェブ解析が楽になりますように!!