实践目的:用R语言对数据进行简单处理操作,包括处理缺失数据,数据类型转换等,以及根据源数据作出对应的消费趋势图。
参考资料:http://www.jianshu.com/p/9c5a4c999684
excel表导入
library(readxl)
hjxdata <- read_excel("C:/Users/Tiram/Desktop/hjxdata.xlsx")
View(hjxdata)
head(hjxdata)
1.重命名
names(hjxdata) <- c("userID","userName","goodsID","goodsName","goodsType","price","hight","atualmony","time")
head(hjxdata)
2.缺失数据剔除(运用逻辑运算符以及缺失数据函数na.omint()能删除所有含有缺失数据的行)
hjxdata <- hjxdata[!is.na(hjxdata$time),]
hjxdata <- hjxdata[!is.na(hjxdata$goodsType),]
hjxdata <- hjxdata[!is.na(hjxdata$goodsName),]
查看时间的数据类型
class(hjxdata$time)
3.数据类型转换
hjxdata$time <- as.Date(hjxdata$time,"%Y-%m-%d")
class(hjxdata$time)
hjxdata$userID <- as.numeric(hjxdata$userID)
hjxdata$price <- as.numeric(hjxdata$price)
hjxdata$hight <- as.numeric(hjxdata$hight)
class(hjxdata$hight)
4.数据排序(根据购买的时间升序排列)
hjxdata <- hjxdata[order(hjxdata$time,decreasing = FALSE),]
数据分析
1.月均消费次数(注同一天内,同一个人发生的所有消费算作一次消费;月消费次数=总消费金额/月数)
kpi1 <- hjxdata[!duplicated(hjxdata[,c("time","userID")]),]
View(kpi1)
hjxdata <- hjxdata[!is.na(hjxdata$time),]
#总消费次数相当于行数
ConsumeNumber <- nrow(kpi1)
#根据月数时间范围计算
#最小的时间值
startTime <- kpi1$time[1]
#最大时间值
endTime <- kpi1$time[nrow(kpi1)]
#天数
Day <- as.numeric(endTime - startTime)
#月数(整除法)
Month <- Day %/% 30
#月均消费次数
MothConsume <- ConsumeNumber / Month
#月均消费金额=总消费金额/月数
#采用函数sum求和,并用na.rm剔除缺失值,只对有效值进行求和
totalMoney <- sum(hjxdata$atualmony,na.rm = TRUE)
monthMoney <- totalMoney / Month
#客单价(pct):per customer transaction
pct <- totalMoney /ConsumeNumber
#保留小数点后两位
pct <- format(round(pct,2),nsmall = 2)
绘制消费趋势曲线
#以周数为x轴,周累计消费金额为纵轴
week <- tapply(hjxdata$atualmony,format(hjxdata$time,"%Y-%U"),sum)
week <- as.data.frame.table(week)
names(week) <- c("time","atualmony")
week$time <- as.character(week$time)
week$timeNumber <- c(1:nrow(week))
plot(week$timeNumber,week$atualmony,xlab="时间(第几周)",ylab="消费总金额",xaxt = "n",main= "2016年XX消费趋势",col="red",type="b")
axis(1.5,at=week$timeNumber, labels=week$time, cex.axis = 1.5)
结果
继续完善的地方
1. 绘制的消费趋势图中的纵坐标数值过大,无法正确显示,这是自己下一步需要完善的地方。
2. 根据日期,将其分组,然后根据日期分组统计出各用户一周购买的频率或者是一个月的购买频率。
End。
我是R语言初学者,我为自己代言,Swag。