You need to enable JavaScript to run this app. R语言使用dplyr/tidyr实现跨组变量共现次数统计的方法
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用dplyr/tidyr实现跨组变量共现次数统计的方法

跨组变量共现统计实现方案

使用dplyr+tidyr的实现代码如下:

输出格式1:组合字符串+计数

library(dplyr)
library(tidyr)

df_out <- df_in %>%
  group_by(id) %>%
  # 同id下先对颜色排序,再生成所有两两组合并拼接为字符串,避免顺序导致的重复统计
  summarise(colors = combn(sort(color), 2, paste, collapse = "-")) %>%
  ungroup() %>%
  count(colors)

运行上述代码可直接得到与示例完全一致的输出结果。

输出格式2:列联表

library(purrr) # 用于提取组合元素,如已加载tidyverse可省略

# 先生成两两组合的计数表
pair_count <- df_in %>%
  group_by(id) %>%
  summarise(pair = combn(sort(color), 2, list)) %>%
  unnest_longer(pair) %>%
  ungroup() %>%
  mutate(
    col1 = map_chr(pair, 1),
    col2 = map_chr(pair, 2)
  ) %>%
  count(col1, col2)

# 补充对称的组合数据,保证列联表行列对称
full_pair <- bind_rows(
  pair_count,
  pair_count %>% rename(col2 = col1, col1 = col2)
)

# 转换为宽格式列联表
contingency_table <- full_pair %>%
  pivot_wider(
    names_from = col2,
    values_from = n,
    values_fill = 0
  ) %>%
  rename(` ` = col1)

# 可选:将对角线数值替换为"-"
all_colors <- unique(df_in$color)
for (color in all_colors) {
  contingency_table[contingency_table$` ` == color, color] <- "-"
}

内容的提问来源于stack exchange,提问作者maia-sh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 02:27:04