N重交叉列表的实现:
通过将有因果关系的属性结合起来进行统计分析。交叉列表在分析数据的变化趋势或者通过复合属性来发掘因果关系方面十分有用。
接下来通过SQL实现交叉表统计:
二维交叉表:
三维交叉表:
在分析用户使用的终端设备,对设备类型进行交叉列表统计时,结果发现9月IOS用户数相比8月下降幅度很小,然而android用户数却极大地减少了,因为问题可能出在这个用户群。
用户群分析结果可视化:
可以看出,之前IOS和ANDROID的用户数大体相当,但是从9月的第2周开始,ANDROID用户数急剧减少。
相应的解决方案也就知道了。
相应的R语言代码:
di<-merge(DAU_1,USER_INFO,by=c('user_id','app_name'))
head(di)
di$log_month<-substr(di$log_date,1,7)
head(di)
table(di[,c('log_month','gender')])
table(di[,c('log_month','generation')])
library(reshape2)
dcast(di,log_month~gender+generation,value.var='user_id',length)
xtabs(data=di,~log_month+device_type)
##画时间序列图
dii<-ddply(di,.(log_date,device_type),summarize,dau=length(user_id))
library(ggplot2)
library(scales)
ggplot(dii,aes(x=as.Date(log_date),y=dau,col=device_type,lty=device_type,shape=device_type))+ geom_line(lwd=1)+geom_point(size=4)+scale_y_continuous(labels=comma,limits=c(0,max(dii$dau)))+labs(x='',y='')