首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将客户群体分成12个样本(=每月周期)

将客户群体分成12个样本(=每月周期)
EN

Stack Overflow用户
提问于 2012-07-03 11:12:54
回答 1查看 155关注 0票数 0

我需要将500.000名客户分成12个有代表性的样本,每月与他们联系。

这12个样品应具有代表性的产品和生命周期的产品类别(A,B,C)。的意思是:我需要按产品id和生命周期类分层比例样本(可以连接)

我需要的不仅仅是一个样本,还有12个样本。

结果应该是添加分层循环id(1-12)的起源表。

f.e.:

代码语言:javascript
复制
cust_id, product, lifecycle, NEW: cycle_id
10000, 4004, A, 3
10000, 2000, B, 6
10001, 3000, B, 12

一个客户可以欠几个产品,但是组合的客户产品是独一无二的.

每个客户产品组合只需在12个周期内使用一次(因此不放回)。

我怎样才能在R中做到这一点?

样本数据行:

代码语言:javascript
复制
cust_id, product, lifecycle
10000, 4004, A
10000, 2000, B
10001, 3000, B
10002, 2000, A
10004, 4004, C
...
EN

回答 1

Stack Overflow用户

发布于 2012-07-03 15:29:11

这是一个丑陋但实用的解决方案。我为奇怪而复杂的细分表示歉意,但不幸的是,by()以一种非常奇怪的方式存储其数据。

代码语言:javascript
复制
mysamp <- function(dat){
  samp <- runif(length(dat)) #get 12 random numbers
  samp <- ceiling(samp*12) #standardize between 1 and 12
  return(samp)
}

这是你将你的种群划分成12个样本的函数。现在说“zz”是您的数据集:

代码语言:javascript
复制
cust <- c(101, 101, 102, 105, 107)
prod <- c(4004, 2000, 3000, 3000, 4004)
life <- c('A', 'B', 'B', 'B', 'A')
zz <- data.frame(cust, prod, life)
prodlife <- paste0(zz$prod, zz$life)
zz <- data.frame(zz, prodlife)

给你

代码语言:javascript
复制
> zz
  cust prod life prodlife
1  101 4004    A    4004A
2  101 2000    B    2000B
3  102 3000    B    3000B
4  105 3000    B    3000B
5  107 4004    A    4004A

然后,您需要创建一个0列,以将cycle.id放入其中(我在我的示例中称之为“cyc”)。将其附加到data.frame中,就像添加zz$prodlife一样。然后可以使用这些语句对示例进行采样,并将示例分配给列:

代码语言:javascript
复制
cycle <- by(newzz$cust, newzz$prodlife, mysamp)
for(i in 1:length(cycle)){
    for(j in 1: length(cycle[i][[1]])){
        zz$cyc[zz$prodlife == names(cycle)[i]][j] <- cycle[i][[1]][j]
    }
}

by()语句在做所有的工作,可怕的for循环只是将采样的值分配给正确的点。因为'by‘类的设置不方便,所以我想不出一个更有效的方法来完成这个任务,但也许其他人可以.?无论如何,这给了我:

代码语言:javascript
复制
> zz
  cust prod life prodlife cyc
1  101 4004    A    4004A   6
2  101 2000    B    2000B   5
3  102 3000    B    3000B   7
4  105 3000    B    3000B   8
5  107 4004    A    4004A   1

当然,这个例子太小,无法判断样本是否被正确地分层,但这应该是可行的。编码愉快!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11309723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档