首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的产品使用组合

R中的产品使用组合
EN

Stack Overflow用户
提问于 2015-06-27 20:00:59
回答 1查看 249关注 0票数 0

我试图找出一种方法来获得R中有唯一用户的产品组合列表,这是一个后续问题[生成唯一用户项交叉产品combinations](https://stackoverflow.com/questions/31089205/generate-matrix-of-unique-user-item-cross-product-combinations)的矩阵“。

代码语言:javascript
复制
df <- data.frame(Products=c('Product a', 'Product b', 'Product a', 
                            'Product c', 'Product b', 'Product c', 'Product d'),
                 Users=c('user1', 'user1', 'user2', 'user1', 
                         'user2','user3', 'user1'))

发展基金的产出是:

代码语言:javascript
复制
   Products Users
1 Product a user1
2 Product b user1
3 Product a user2
4 Product c user1
5 Product b user2
6 Product c user3
7 Product d user1

我正在寻找的输出将是所有三个产品组合:

代码语言:javascript
复制
Product a/Product b/Product c - 3
Product a/Product b/Product d - 2
Product b/Product c/Product d - 3
...

再次感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-27 20:19:56

看起来,您希望将逻辑或处理作为用户和每个产品集之间的关系。换句话说,您想要计算集合中有多少唯一的用户有任何产品。这里有一种方法:

代码语言:javascript
复制
df <- data.frame(Products=c('Product a','Product b','Product a','Product c','Product b','Product c','Product d'),Users=c('user1','user1','user2','user1','user2','user3','user1'));
comb <- combn(unique(df$Products),3);
data.frame(comb=apply(comb,2,function(x) paste(levels(comb)[x],collapse='/')),num=apply(comb,2,function(x) length(unique(df$Users[as.integer(df$Products)%in%x]))));
##                            comb num
## 1 Product a/Product b/Product c   3
## 2 Product a/Product b/Product d   2
## 3 Product a/Product c/Product d   3
## 4 Product b/Product c/Product d   3

编辑:逻辑更复杂,因为我们需要测试每个用户是否存在每种产品。我想我找到了一个很好的解决方案,使用aggregate()match()

代码语言:javascript
复制
data.frame(comb=apply(comb,2,function(x) paste(levels(comb)[x],collapse='/')),num=apply(comb,2,function(x) sum(aggregate(Products~Users,df,function(y) !any(is.na(match(x,as.integer(y)))))$Products)));
##                            comb num
## 1 Product a/Product b/Product c   1
## 2 Product a/Product b/Product d   1
## 3 Product a/Product c/Product d   1
## 4 Product b/Product c/Product d   1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31092962

复制
相关文章

相似问题

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