r - R相关问题,如何找到最频繁的变量对?
问题描述
我有一个看起来像 这样的数据框
我的目标是找到最常见的一对项目,在这种情况下(1 和 3)
我已经尝试过了:
names(tail(sort(table(unlist(tapply(ol$ORDER_ID, ol$SKU_ID,
FUN = function(x) if(length(x) > 1) combn(unique(x), 2, paste, collapse="-") else NA)))),
3))
但我不断收到此错误消息,我不知道如何修复它。
Error in combn(unique(x), 2, paste, collapse = "-") : n < m
有人建议
library(dplyr), then count(your_data, ORDER_ID, SKU_ID) %>% arrange(desc(n))
但它仍然给我同样的错误信息,另一个人把我推荐给了这篇文章,但我很难看到相关性。
解决方案
在基础 R 中,您可以执行以下操作:
tab <- table(ol$SKU_ID, ol$ORDER_ID)
as.numeric(combn(row.names(tab), 2)[,
which.max(rowSums(apply(combn(row.names(tab), 2), 1,
function(x) rowSums(tab[x,]))))])
#> [1] 1 3
使用的数据
ol <- data.frame(
ORDER_ID = c(111, 111, 121, 121, 121, 121, 131, 131, 141, 141, 141),
SKU_ID = c(1, 2, 1, 3, 4, 5, 1, 3, 1, 3, 9))
推荐阅读
- c++ - 如何在 C++ 中获取有关服务的启动类型的信息?
- r - R Plotly 将颜色更改为 add_bars 部分中的条形
- python - 如何在 Django 中使用 UserCreationForm 将 DateField 实现到自定义用户模型的注册表单中?
- c# - 结合代表顺序而不是同时运行?
- minizinc - Minizinc:车间问题,尽量减少花费太长时间
- wordpress - 如何在页眉中发布 WordLift 的 JSON-LD
- c# - 当 WCF 服务托管在 Windows 服务中时读取 TNSNAMES.ORA
- sql-server - SQL Server 2008R2:SET ANSI_NULLS OFF 不影响与空值的合并匹配
- windows - 任务“GenerateAppxPackageRecipe”失败。指定的模块无法找到
- pymunk - pymunk - 跳闸段