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

R中按分组统计数据框5个变量行内最常见数值对的实现方法

实现代码

你可以结合dplyr的分组处理函数和combn来实现需求,完整可运行代码如下:

首先加载依赖包:

library(tidyverse)

核心处理逻辑:

# 替换df为你自己的数据框名
stat_result <- df %>%
  group_by(group) %>%
  group_modify(.f = function(group_data, group_key) {
    # 逐行生成所有无序数值对
    all_pairs <- apply(group_data %>% select(X1:X5), 1, function(row_val) {
      combn(row_val, m = 2, function(pair) paste(sort(pair), collapse = "-"))
    }) %>% as.vector()
    # 统计频次并排序
    tibble(
      Pair = names(table(all_pairs)),
      n = as.integer(table(all_pairs))
    ) %>% arrange(desc(n))
  }) %>%
  ungroup()

# 如果只需要保留每组出现频率最高的前N对,比如前10,可加上下面的代码
# stat_result <- stat_result %>% group_by(group) %>% slice_max(n, n = 10)

逻辑说明

  • 用group_by按group字段拆分数据
  • 用group_modify对每个分组的子数据单独处理:逐行提取X1到X5的5个数值,用combn(m=2)生成所有两两组合,每组组合经过排序后拼接为字符串,避免a-b和b-a被识别为不同的对
  • 用table统计每个数值对的出现次数,按频次降序排序后输出
  • 最终输出的stat_result就是你需要的group、Pair、n三列格式的结果

内容的提问来源于stack exchange,提问作者Lyle Danley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:18:03