R-电商人力模型

1、练习题

#作业:构造6个数据框,每个数据框分别有三个变量,
#id、type、score
#id:是0-9,10-19,20-29……
#type:"A","B","C"……
#score:长度为10的随机数
#把这6个数据框写到一张表里,表名:pro

library(RMySQL)
conn<-dbConnect(MySQL(),user="root",password="123456",dbname="test_db")
for (i in 1:6) {
  df<-data.frame(
    id=((i-1)*10):(i*10-1),
    type=LETTERS[i],
    score=rnorm(10),
    stringsAsFactors = F
  )
  dbWriteTable(conn,"pro",df,
               append=i>1,
               row.names=F)
}

 电商人力模型

install.packages("readxl")
library(readxl)
#读取数据源
zsj<-read_xlsx(path = "源数据-删减版.xlsx",
              sheet=1)

as.Date("2019/12/21")+1
#修改支付时间为日期型
zsj$支付时间<-as.Date(zsj$支付时间)

#构建销售人员和入职时间的查找表
rzsj<-as.Date(scan("clipboard",what = ""))
names(rzsj)<-scan("clipboard",what = "")
rzsj["刘天航"]
#得到每一个销售人员入职15天、30天、60天以后是哪一天
rzsj_15<-rzsj+15
rzsj_30<-rzsj+30
rzsj_60<-rzsj+60
rzsj_15["刘天航"]

names(zsj)
#筛选数据
clsj<-zsj[,c("客户id","订单金额","支付时间","接手客服")]
clsj
#对支付时间进行排序
x<-c(3,4,9,2,5)
order(x)
x[order(x)]
clsj<-clsj[order(clsj$支付时间),]
clsj

#把两张表的数据结合起来
clsj_m<-clsj[clsj$接手客服 %in% names(rzsj),]
nrow(clsj)
nrow(clsj_m)
#对数据进行切分
clsj_l<-split(clsj_m,clsj_m$接手客服)
length(clsj_l)

library(plyr)
jieguo<-ldply(clsj_l,chuli)

#构建chuli函数
chuli<-function(x){
  
  leiji<-cumsum(x$订单金额)
  lins_1wan<-x$支付时间[leiji>10000][1]
  lins_3wan<-x$支付时间[leiji>30000][1]
  lins_5wan<-x$支付时间[leiji>50000][1]
  
  销售人员<-unique(x$接手客服)
  首单时间<-x$支付时间[1]
  
  zhi<-data.frame(
    销售人员=销售人员,
    首单时间=首单时间,
    破蛋时间=as.numeric(x$支付时间[1]-rzsj[销售人员]),
    
    `1万业绩`=if(!is.na(lins_1wan)) as.numeric(lins_1wan-rzsj[销售人员]) else "",
    `3万业绩`=if(!is.na(lins_3wan)) as.numeric(lins_3wan-rzsj[销售人员]) else "",
    `5万业绩`=if(!is.na(lins_5wan)) as.numeric(lins_5wan-rzsj[销售人员]) else "",
    
    `15天支付金额`=sum(x$订单金额[x$支付时间<=rzsj_15[销售人员]]),
    `30天支付金额`=sum(x$订单金额[x$支付时间<=rzsj_30[销售人员]]),
    `60天支付金额`=sum(x$订单金额[x$支付时间<=rzsj_60[销售人员]]),
    
    `15天客户数`=length(unique(x$客户id[x$支付时间<=rzsj_15[销售人员]])),
    `30天客户数`=length(unique(x$客户id[x$支付时间<=rzsj_30[销售人员]])),
    `60天客户数`=length(unique(x$客户id[x$支付时间<=rzsj_60[销售人员]])),
    
    stringsAsFactors=F,
    check.names=F
  )
  
  zhi
}

#写入文件
write.csv(jieguo[,-1],"电商数据.csv",row.names=F)

#使用实例
xx<-clsj_l[[1]]
xx$支付时间[1]
as.numeric(xx$支付时间[1]-rzsj["陈佳"])
unique(xx$接手客服)
xx$支付时间[cumsum(xx$订单金额)>700][1]
xx$支付时间[cumsum(xx$订单金额)>10000][1]
sum(xx$订单金额)
xx$支付时间[cumsum(xx$订单金额)>100000][1]
rzsj_15["陈佳"]
sum(xx$订单金额[xx$支付时间<=rzsj_15["陈佳"]])
length(unique(xx$客户id[xx$支付时间<=rzsj_15["陈佳"]]))

1111

猜你喜欢

转载自www.cnblogs.com/foremostxl/p/12152304.html