計算RFM定向營銷

 

FRM方法獲取客戶消費行爲信息,而且計算偏心打折的客戶,進行定向營銷sql

RFM分析方法獲取客戶的消費行爲信息函數

最近一次消費(Recency), 消費頻率(Frequency),消費金融(Monetary)spa

#FRM提取行爲變量
#讀取數據
library(sqldf)
setwd("C:\\Users\\Xu\\Desktop\\data")
FRMtable <- read.csv("rfm_trad_flow.csv",stringsAsFactors = F)
#subset()建立子集,選擇表中的FRM信息
FRMinformation <- subset(FRMtable,select = c(time,amount,type_label))
#獲取重要type的分類
table(FRMtable$type)

#第一步:算出近期購買的時間,並添加到原表上
#rfm_trd_flow$time1 <- as.Date(Sys.Date(),format='%m/%d/%Y')-as.Date(FRMtable$time,format='%m/%d/%Y')

#以系統的時間計算
#FRMtable$time1 <- Sys.Date()-as.Date(FRMtable$time,format='%m/%d/%Y') 

#在這裏以2017/05/13的時間去計算
FRMtable$time2 <- as.Date("05/13/2017",format ='%m/%d/%Y')-as.Date(FRMtable$time,format = '%m/%d/%Y')

RMF <- sqldf("select cust_id, min(time2) as Recency,count(*) as Freq,sum(amount) as Monetary
             from FRMtable
             where type='Special_offer' or type ='Normal'
             group by cust_id")


#quantil函數是取分位數,小於50%的爲T,
RMF$r_rank <- RMF$Recency < quantile(RMF$Recency,probs = c(0.5))

 

  • reshape包

其中的cast()方法能夠對數據進行轉置code

#數據重組
#計算特別愛買打折商品的客戶,將打折商品除以購買金額的總數
#拆分列:根據觀察須要將type類別下normal金額,Special_offer金額當成列(須要進行轉置),而後將其下進入進行彙總

#先計算客戶每種的金額
rfm <- sqldf("select cust_id,type,sum(amount) as Monetary
             from FRMtable
             where type = 'Special_offer' or type='Normal'
             group by cust_id,type")

library(reshape)
rfm_w <- cast(rfm,cust_id~type) #cust_id表示要分組依據,type其值爲新變量的名稱
#對缺失值進行處理用0替換,否者計算的結果都是NA
rfm_w[is.na(rfm_w$Special_offer),]$Special_offer <- 0
rfm_w$Special_offer_ratio <- rfm_w$Special_offer/(rfm_w$Special_offer + rfm_w$Normal)

 

 

  • cast()方法,拆分列
rfm_w <- cust(rfm,cust_id~type)#cust_id表示要分組依據,type其值爲新變量的名稱

 

 

  • melt()方法,堆疊列   
rfm_l <- melt(rfm_w, id="cust_id") # id= 是分組的依據

 

相關文章
相關標籤/搜索