You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中生成产品组合ID列及可视化共同购买数据的方法

R数据框处理与可视化方案

一、添加ID列

要生成每行对应的产品组合ID,用apply函数遍历每行数据,筛选出值为1的产品列名,再用paste拼接即可:

# 加载tibble包(如果还没加载)
library(tibble)

# 新增ID列
df$ID <- apply(df[, 1:9], 1, function(row) {
  # 取出当前行值为1的列名,用"-"拼接
  paste(names(row)[row == 1], collapse = "-")
})

运行后,第一行的ID就会变成pro2-pro4,完全符合需求。

二、可视化方案推荐

1. 横向条形图(最直观)

用ggplot2做横向条形图,把购买次数作为横轴,产品组合作为纵轴,同时按次数降序排列,让高频组合优先展示:

library(ggplot2)

# 先按购买次数降序排序数据框
df_sorted <- df[order(-df$count), ]

ggplot(df_sorted, aes(x = count, y = reorder(ID, count))) +
  geom_bar(stat = "identity", fill = "#2E86AB") +
  labs(title = "产品组合购买次数分布",
       x = "购买次数",
       y = "产品组合") +
  theme_minimal() +
  theme(axis.text.y = element_text(size = 8)) # 调整纵轴标签字号,避免长组合名重叠

这个图能直接对比每个组合的热度,一眼就能看到哪些组合最受欢迎。

2. Top N组合条形图(避免拥挤)

如果组合数量太多,全展示会显得杂乱,可以只保留Top N的高频组合,剩下的合并为“其他”:

# 设定要展示的Top数量
top_n <- 10

# 提取Top10组合
df_top <- head(df_sorted, top_n)
# 计算剩余组合的总次数,合并为"其他"
df_other <- tibble(
  ID = "其他",
  count = sum(tail(df_sorted$count, nrow(df_sorted) - top_n))
)
# 合并数据
df_combined <- rbind(df_top, df_other)

ggplot(df_combined, aes(x = count, y = reorder(ID, count))) +
  geom_bar(stat = "identity", fill = c(rep("#2E86AB", top_n), "#F2C14E")) +
  labs(title = "Top10产品组合购买次数",
       x = "购买次数",
       y = "产品组合") +
  theme_minimal()

这样图表更简洁,重点突出最热门的组合,同时也能看到剩余组合的总占比。

内容的提问来源于stack exchange,提问作者Jianyang Tai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:14:54