library("dplyr")
##
## Attaching package: 'dplyr'
##
## The following objects are masked from 'package:stats':
##
## filter, lag
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library("magrittr")
## Warning: package 'magrittr' was built under R version 3.0.3
date <-
seq(from=as.Date("2014-01-01"),to=as.Date("2014-02-01"),by=1) %>%
sample(.,300,replace=T)
users <-
sample(letters[1:10], 300, replace = T)
user_log_sample.df <-
data.frame(
user=users,
date=date
) %>%
arrange(date)
user_log_sample.df %>% head # ユーザ利用履歴ログっぽいものを作成
## user date
## 1 b 2014-01-01
## 2 d 2014-01-01
## 3 e 2014-01-01
## 4 d 2014-01-01
## 5 e 2014-01-01
## 6 e 2014-01-01
log.tbl <-
user_log_sample.df$user %>% table # tableでカウント(日付データいらなかった。。
(log.tbl)
## user_log_sample.df$user
## a b c d e f g h i j
## 27 25 31 31 35 34 32 26 31 28
class(log.tbl) # データ型の確認
## [1] "table"
log.tbl %>% as.data.frame -> res # データフレームに変換
res
## user_log_sample.df.user Freq
## 1 a 27
## 2 b 25
## 3 c 31
## 4 d 31
## 5 e 35
## 6 f 34
## 7 g 32
## 8 h 26
## 9 i 31
## 10 j 28
str(res) # Freq は intになってる
## 'data.frame': 10 obs. of 2 variables:
## $ user_log_sample.df.user: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
## $ Freq : int 27 25 31 31 35 34 32 26 31 28
# tableは使わずに、dplyrでカウントする場合
res <-
user_log_sample.df %>%
group_by(user) %>%
summarise(accessed=length(date))
res
## Source: local data frame [10 x 2]
##
## user accessed
## 1 a 27
## 2 b 25
## 3 c 31
## 4 d 31
## 5 e 35
## 6 f 34
## 7 g 32
## 8 h 26
## 9 i 31
## 10 j 28