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

如何用R语言构建卡片编码共现关联矩阵?

R语言实现卡片共现统计与关联矩阵生成

1. 数据读取与预处理

假设你的CSV文件中,每一列对应一组卡片编码,空值代表该组不含对应卡片。先读取数据:

# 加载tidyverse工具包(若未安装先运行install.packages("tidyverse"))
library(tidyverse)
# 读取CSV,无列名时设header=FALSE,空值用na.strings识别
df <- read.csv("你的文件路径.csv", header = FALSE, na.strings = c("", "NA"))

将每一列转为非空编码的列表,便于后续处理:

# 提取每一列的非空编码,组成分组列表
groups <- apply(df, 2, function(col) na.omit(col))

2. 统计编码共现次数

先整理所有唯一编码,再初始化共现矩阵并填充数据:

# 获取所有编码并按顺序排序
all_codes <- sort(unique(unlist(groups)))
# 创建空的共现矩阵,行/列名设为编码
cooccur_matrix <- matrix(0, 
                         nrow = length(all_codes), 
                         ncol = length(all_codes),
                         dimnames = list(all_codes, all_codes))

# 遍历每个分组,更新共现次数
for (group in groups) {
  # 生成当前分组内所有编码的两两组合
  pairs <- expand.grid(group, group, stringsAsFactors = FALSE)
  # 对每一对编码,共现次数+1
  for (i in 1:nrow(pairs)) {
    cooccur_matrix[pairs[i,1], pairs[i,2]] <- cooccur_matrix[pairs[i,1], pairs[i,2]] + 1
  }
}

3. 转换为百分比关联矩阵

总列数为643,将共现次数转换为占比百分比:

# 计算百分比,保留两位小数
percent_matrix <- round((cooccur_matrix / 643) * 100, 2)

4. 可选:导出结果到CSV

若需保存结果到本地文件:

write.csv(percent_matrix, "卡片共现百分比矩阵.csv", row.names = TRUE)

新手注意事项

  • 确保文件路径正确,若CSV与R脚本在同一文件夹,直接写文件名即可
  • 若CSV有列名,将header=FALSE改为header=TRUE,并可通过df[, -1]去掉列名列再生成groups
  • 上述代码针对43个编码、643列的规模完全适用,无需担心性能问题

内容的提问来源于stack exchange,提问作者Alex Fewings

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 12:24:52