使用R语言实现数据分段
今天跟大家讲讲我工作中用到的数据分段,数据分段一般在什么地方会使用到呢?评分。之前写过一篇《实战: RFM》模型使用,那篇文章就详细介绍了CRM(客户关系管理)分析中关于RFM的应用。应用中就提到如何对R(最近一次消费距当前的时间间隔)、F(时间段内的消费频次)和M(时间段内的消费总额)指标进行分段,形成三种得分指标,最后根据得分指标计算出每个用户的总得分,从而可以计算用户的价值高低。
本文与之前提到的文章不同之处在于脚本的更改,使脚本更具灵活性。《实战: RFM模型使用》文中对R、F和M分段使用for循环,而且需要对每一个指标做循环,如果某个数据框的字段非常多,这样用for循环就显得非常麻烦。所以就有必要写一段更灵活的连续变量分段操作的R脚本。这里用案例说明一下数据分段操作:
#随机参数一列会员的消费总额
set.seed(1234)
Money <- c(round(runif(n = 5000, min = 56, max = 9143)), round(rnorm(n = 5000, mean = 892, sd = 23)))
#使用《实战: RFM模型使用》的分段方法,这里分成10段,尽量保证每段中的数据量大致相当
library(Hmisc)
#使用cut2()函数对数据进行分段
M_X <- cut2(x = Money, g = 10, onlycuts = TRUE)
#使用for循环将每一段范围值设定一个评分,即1:10分
M_score <- 0
for(i in 1:10) {
M_score[Money >= M_X[i] & Money < M_X[i+1]] = i
#由于范围Money < M_X[i+1]不包含最后一个值,故另外计算
M_score[Money == M_X[11]] = 10
}
table(M_score)
通过上面的方法,可以将连续型数据分成n段,从案例返回的结果可知,10段中的样本量基本相当,可以视作分段成功。下面再看看自定义函数实现的分段:
#自定义得分函数,x为目标向量,g为所需分段数量
Score_function <- function(x,g = 10){
require(Hmisc)
#计算分段的切割点
cuts <- cut2(x,g = g, onlycuts = TRUE)
#将所需结果存放在res数据框中
res <- data.frame(x=x, cut = cut2(x, cuts = cuts),score = as.numeric(cut2(x, cuts = cuts)))
#这里返回res数据框中的评分字段
return(res[,'score'])
}
M_score2 <- Score_function(x = Money, g = 10)
table(M_score2)
同样,分段的结果与《实战: RFM模型使用》脚本的结果一致,这里说一下自定义函数的优势:
1)可以灵活的更改分组数量,即g参数
2)不需要循环,速度得到提升
3)可以结合sapply()函数,应用于大型数据框(高维数据),从而避免对每个字段都计算一次for循环
下面创建一个数据框,来验收一下自定义函数的效果:
set.seed(1234)
x1 <- round(rnorm(n = 5000, mean = 125, sd = 30))
x2 <- round(runif(n = 5000, min = 10, max = 100))
x3 <- round(runif(n = 5000, min = 100, max = 1000))
x4 <- round(rnorm(n = 5000, mean = 100, sd = 10))
df <- data.frame(x1 = x1, x2 = x2, x3 = x3, x4 = x4)
#结合sapply()函数
df2 <- sapply(df, Score_function)
head(df2)
df2 <- as.data.frame(df2)
table(df2$x1);table(df2$x2);table(df2$x3);table(df2$x4)
如果使用《实战: RFM模型使用》的方法,4个变量需要单独拿出来做4次for循环。如果你觉得还可以再套一个循环,这样就可以不用单独4次for循环了,问题是这样做会大大降低计算效率,影响速度。
数据分析咨询请扫描二维码
CDA数据分析师认证:CDA认证分为三个等级:Level Ⅰ、Level Ⅱ和Level Ⅲ,每个等级的报考条件如下: Le ...
2024-11-14自学数据分析可能是一条充满挑战却又令人兴奋的道路。随着数据在现代社会中的重要性日益增长,掌握数据分析技能不仅能提升你的就 ...
2024-11-14数据分析相关职业选择 数据分析领域正在蓬勃发展,为各种专业背景的人才提供了丰富的职业机会。从初学者到有经验的专家,每个人 ...
2024-11-14数据挖掘与分析在金融行业的使用 在当今快速发展的金融行业中,数据挖掘与分析的应用愈发重要,成为驱动行业变革和提升竞争力的 ...
2024-11-14学习数据挖掘需要掌握哪些技能 数据挖掘是一个不断发展的领域,它结合了统计学、计算机科学和领域专业知识,旨在从数据中提取有 ...
2024-11-14统计学作为一门基于数据的学科,其广泛的应用领域和多样的职业选择,使得毕业生拥有丰厚的就业前景。无论是在政府还是企业,统计 ...
2024-11-14在当今高速发展的技术环境下,企业正在面临前所未有的机遇和挑战。数字化转型已成为企业保持竞争力和应对市场变化的必由之路。要 ...
2024-11-13爬虫技术在数据分析中扮演着至关重要的角色,其主要作用体现在以下几个方面: 数据收集:爬虫能够自动化地从互联网上抓取大量数 ...
2024-11-13在数据分析中,数据可视化是一种将复杂数据转化为图表、图形或其他可视形式的技术,旨在通过直观的方式帮助人们理解数据的含义与 ...
2024-11-13在现代银行业中,数字化用户行为分析已成为优化产品和服务、提升客户体验和提高业务效率的重要工具。通过全面的数据采集、深入的 ...
2024-11-13在这个数据飞速增长的时代,企业若想在竞争中占据优势,必须充分利用数据分析优化其营销策略。数据不仅有助于理解市场趋势,还可 ...
2024-11-13数据分析行业的就业趋势显示出多个积极的发展方向。随着大数据和人工智能技术的不断进步,数据分析在各行各业中的应用变得越来越 ...
2024-11-13市场数据分析是一门涉及多种技能和工具的学科,对企业在竞争激烈的市场中保持竞争力至关重要。通过数据分析,企业不仅可以了解当 ...
2024-11-13数据分析与数据挖掘是数据科学领域中两个关键的组成部分,它们各有独特的目标、方法和应用场景。尽管它们经常在实际应用中结合使 ...
2024-11-13在如今这个数据驱动的时代,数据分析能力已经成为许多行业的重要技能。无论是为工作需要,还是为了职业转型,掌握数据分析都能够 ...
2024-11-13在如今这个数据驱动的时代,数据分析能力已经成为许多行业的重要技能。无论是为工作需要,还是为了职业转型,掌握数据分析都能够 ...
2024-11-13作为一名业务分析师,你肩负着将业务需求转化为技术解决方案的重任。面试这一角色时,涉及的问题多种多样,涵盖技术技能、分析能 ...
2024-11-13自学数据分析可能看似一项艰巨的任务,尤其在开始时。但是,通过一些策略和方法,你可以系统地学习和掌握数据分析的相关知识和技 ...
2024-11-10Excel是数据分析领域中的一款强大工具,它凭借其灵活的功能和易用的界面,成为了许多数据分析师和从业者的首选。无论是简单的数 ...
2024-11-10在快速发展的商业环境中,数据分析能力已经成为许多行业的核心竞争力。无论是初学者还是经验丰富的专家,搭建一个有效的数据分析 ...
2024-11-10