如何根据另一个变量计算变量的不同“类别组合”的数量?

时间:2018-03-29 15:21:11

标签: r

CustomerID  MarkrtungChannel    OrderID
1   A   1
2   B   2
3   A   3
4   B   4
5   C   5
1   C   6
1   A   7
2   C   8
3   B   9
3   B   10

嗨,我想知道有多少客户使用了哪些营销渠道组合。

如何用R?

计算出来?

E.g。营销渠道A和C的组合由1位客户(ID 1)

使用

营销渠道C和B的组合也由1位客户(ID 2)

使用

等等......

2 个答案:

答案 0 :(得分:0)

你可以采取多种方式。这是data.table方式:

# Here is your data
df<-structure(list(CustomerID = c(1L, 2L, 3L, 4L, 5L, 1L, 1L, 2L, 
                              3L, 3L), MarkrtungChannel = structure(c(1L, 2L, 1L, 2L, 3L, 3L, 
                                                                      1L, 3L, 2L, 2L), .Label = c("A", "B", "C"), class = "factor"), 
               OrderID = 1:10), .Names = c("CustomerID", "MarkrtungChannel", 
                                           "OrderID"), class = "data.frame", row.names = c(NA, -10L))
df[]<-lapply(df[],as.character)

# Here is the combination field
library(data.table)
setDT(df)
df[,Combo:=.(list(unique(MarkrtungChannel))), by=CustomerID]  
# Or (to get the combination counts)
df[,list(combo=(list(unique(MarkrtungChannel)))), by=CustomerID][,uniqueN(CustomerID),by=combo]  

答案 1 :(得分:0)

这是一个整齐的方式。

library(tidyverse)
data.df%>%
group_by(CustomerID)%>%
summarize(combo=paste0(sort(unique(MarkrtungChannel)),collapse=""))%>%
ungroup()%>%
group_by(combo)%>%
summarize(n.users=n())

计算最后使用每个组合的人数。