R 如何查找组内同时出现的成对值(A和B)的频率
我有一个数据集,包括:客户、食品供应商和订单日期 客户可以在同一天内从多家食品供应商订购。我需要计算同一天内从同一客户订购的供应商组(A&B;A&C、B&C等)的频率和百分比 数据集:R 如何查找组内同时出现的成对值(A和B)的频率,r,R,我有一个数据集,包括:客户、食品供应商和订单日期 客户可以在同一天内从多家食品供应商订购。我需要计算同一天内从同一客户订购的供应商组(A&B;A&C、B&C等)的频率和百分比 数据集: df <- read.table(header=TRUE, text="Name Vendor Order_date Bob A 1-1-2020 Bob A 1-
df <- read.table(header=TRUE,
text="Name Vendor Order_date
Bob A 1-1-2020
Bob A 1-1-2020
Bob B 1-1-2020
Joe A 1-2-2020
Joe B 1-2-2020
Chris A 1-1-2020
Chris B 1-2-2020
David C 1-3-2020
David A 1-3-2020
David B 1-3-2020
")
df这里有一个仅使用基本R
函数的潜在解决方案。该战略是:
按日分割
找到每天从中购买物品的独特供应商
在天内找到这些供应商的所有2个组合
使用unlist
使用表格进行计数
我定义了一个名为combinations
的函数,以使事情更干净
dat = read.table(header=TRUE, text="
Name Vendor Order_date
Bob A 1-1-2020
Bob A 1-1-2020
Bob B 1-1-2020
Joe A 1-2-2020
Joe B 1-2-2020
Chris A 1-1-2020
Chris B 1-2-2020
David C 1-3-2020
David A 1-3-2020
David B 1-3-2020")
combinations = function(x) {
out <- combn(unique(x$Vendor), 2)
apply(out, 2, function(i) paste(sort(i), collapse='+'))
}
dat = split(dat, dat$Order_date)
table(unlist(sapply(dat, combinations)))
#>
#> A+B A+C B+C
#> 3 1 1
dat=read.table(header=TRUE,text=
供应商名称订单日期
鲍勃A 1-1-2020
鲍勃A 1-1-2020
鲍勃B 1-1-2020
乔A 1-2-2020
乔B 1-2-2020
克里斯A 1-1-2020
克里斯B 1-2-2020
大卫C 1-3-2020
大卫A 1-3-2020
大卫B 1-3-2020)
组合=功能(x){
出来
#>A+B A+C B+C
#> 3 1 1