zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [CQOI2015]选数
    利用匈牙利算法&HopcroftKarp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
    玩家死亡,屏幕灰白效果实现
    Bool值相加
    (转)D3D性能优化
    Flash AS3视频教程
    Accurately Profiling Direct3D API Calls (Direct3D 9)
    菲涅尔反射
    sscanf时用到郁闷问题
    如何精确测量程序运行时间(转)
  • 原文地址:https://www.cnblogs.com/foremostxl/p/12152304.html
Copyright © 2011-2022 走看看