1、主要知识点
1、读取csv(read.csv用法)
2、数据集合并(merge用法)
3、分组求和(aggregate用法)
4、日期格式处理(format(as.Date用法))
5、数据可视化–条形图(ggplot用法)
2、数据集下载
链接:https://pan.baidu.com/s/1hs8IFJ2
密码:si78
3、R语言源代码讲解
rm(list=ls())
gc()
options(scipen = 200)
library(ggplot2)
#读取数据##用户登陆时间
DAU <- read.csv('e:/ID/BSD/dau.csv',header = T,stringsAsFactors=F)[,c(1,3)]
##用户消费时间及消费金额
DPU <- read.csv('e:/ID/BSD/dpu.csv',header = T,stringsAsFactors=F)[,c(1,3,4)]
##用户初次安装游戏时间
INS <- read.csv('e:/ID/BSD/install.csv',header=T,stringsAsFactors=F)[,c(1,3)]
# 然后看看这些数据都有哪些字段
head(DAU,3)
head(DPU,3)
head(INS,3)
# log_date:用户登录时间。
#
# user_id:用户id,所有用户id唯一。
#
# payment:用户再当天消费情况。
#
# install_date:用户初次安装游戏时间。
#数据集合并
##第一次合并
dau.ins <- merge(DAU,INS,by='user_id')
##偷偷观察一下看看第二次合并怎么设置参数
head(dau.ins);
head(DPU)
##第二次合并我在另外一个Script做了几次测试
did <- merge(dau.ins,DPU,by=c('log_date','user_id'),all.x = T)
#将NA值(没有消费)设为0
did$payment[is.na(did$payment)] <- 0
head(did)
#按月处理时间变量
#这里有俩办法,还有一个用substr()+as.number()
did$log_date <- as.numeric(format(as.Date(did$log_date),format='%m'))
did$install_date <- as.numeric(format(as.Date(did$install_date),format='%m'))
head(did)
#按月份整合数据:除了下述方法笔者还尝试了by(),reashape2,split()+apply(),均可实现,有兴趣的话可以试试。
final.data <- aggregate(did,by=list(did$user_id,did$log_date,did$install_date),FUN=sum)[,c(1,2,3,7)]
names(final.data) <- c('user_id','log_date','install_date','payment')
#为用户贴上新老标签
final.data$label <- ifelse(final.data$log_date==final.data$install_date,'新用户消费','老用户消费')
head(final.data)
final.sum <- aggregate(final.data[,2:4],by=list(final.data$log_date,final.data$label),sum)[,c(1,2,5)]
names(final.sum) <- c('月份','收入来源','销售额')
#数据到这里就捣腾完毕了,下面可视化探索使用最后的final开头的两个数据集
#可视化分析
(p <- ggplot(final.sum,aes(x=factor(月份),y=销售额,fill=factor(收入来源,levels = c('新用户消费','老用户消费',order=T))))+
geom_bar(width = 0.6,stat = 'identity')+labs(x='月份',fill='收入来源'))+scale_x_discrete(breaks=c(6,7),labels = c('6月','7月'))
> head(final.data)
user_id log_date install_date payment label
1 1 6 4 0 老用户消费
2 2 6 4 0 老用户消费
3 3 6 4 14994 老用户消费
4 4 6 4 0 老用户消费
5 6 6 4 0 老用户消费
6 7 6 4 0 老用户消费
> head(final.sum)
月份 收入来源 销售额
1 6 老用户消费 177886
2 7 老用户消费 177886
3 6 新用户消费 49837
4 7 新用户消费 29199
结论:
老用户的消费情况几乎没什么变化,但是明显新用户的消费额明显少了接近一半,因此给的策略建议就是根据实际成本提高活动宣传,让新消费者买买买。