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