r - R 中是否有生成唯一组合及其频率的解决方案?
问题描述
这是我的代码。我正在尝试生成 Food 列的所有非重复组合以及在给定 ID 列时它出现的次数。
customerDataFrame <- data.frame(CustomerID = c('A', 'B', 'B', 'C', 'D', 'D'),
Food = c('Pizza', 'Pizza', 'Tacos', 'Tacos', 'Tacos', 'Pizza'))
customerDataFrame %>%
group_by(CustomerID) %>%
summarise_all(funs(toString(unique(.)))) %>%
ungroup() %>%
group_by(Food) %>%
summarise(n= n())
这是现在的输出:
# A tibble: 4 x 2
Food n
<chr> <int>
1 Pizza 1
2 Pizza, Tacos 1
3 Tacos 1
4 Tacos, Pizza 1
这在技术上是不正确的,因为购买 (Pizza, Tacos) 和 (Tacos, Pizza) 的客户应该属于同一组。他们购买的顺序无关紧要。
(我从这个答案中得到了代码:Using dplyr to create vector of unique combination of values for a given group)
这是我想要得到的:
# A tibble: 4 x 2
Food n
<chr> <int>
1 Pizza 1
2 Pizza, Tacos 2
3 Tacos 1
解决方案
当您toString
sort
使用Food
.
library(dplyr)
customerDataFrame %>%
group_by(CustomerID) %>%
summarise(Food = toString(sort(Food))) %>%
count(Food)
# Food n
# <chr> <int>
#1 Pizza 1
#2 Pizza, Tacos 2
#3 Tacos 1
推荐阅读
- symfony - 如何通过 JsFormValidatorBundle 验证的表单的 ajax 部分进行更改
- angular - 如何使用 angular 2 在prime ng中一次显示一个日历
- javascript - 在服务器上发布后,asp.net mvc ajax 调用不调用控制器
- java - JLS、JSR 和 JEP 之间有什么区别(或关系)?
- c# - 如何更改 Unity Text 中的文本
- mongodb - 如何根据MongoDB中where条件中引用的文档详细信息获取父文档详细信息?
- qemu - qemu-system-aarch64 从来宾系统内退出
- typescript - 用茉莉花测试打字稿联合类型
- c# - ASP.NET MVC5 使用特定选定数据“分支”向用户显示数据
- ios - NSSet 上的核心数据一对多关系、赋值、获取、谓词