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

统计数据库中同一行内最常共现的变量对频次

找出数据库中变量的共现频率

我正在处理一个大型数据库,希望找出哪些变量最常出现在同一行(即彼此的关联环境中)。每行可能包含20多个变量,且我并不知晓所有变量。

示例数据

var1 <- c("x", "x", "x", "x", "x", "x", "y", "y", "y", "y")
var2 <- c("a", "a", "b", "b", "c", "d", "e", "e", "g", "h")
data <- data.frame(cbind(var1, var2))

预期结果

frequent contactsn
x&a2
x&b2
y&e2
x&c1
x&d1
y&g1
y&h1

解决方案

针对多列变量的场景(每行20+个变量),可以用以下方法处理:

  1. 加载所需工具包
library(tidyverse)
  1. 生成两两变量组合并统计频率
co_occur <- data %>%
  rowwise() %>%
  # 提取当前行所有非NA变量
  mutate(vars = list(na.omit(c_across(everything())))) %>%
  # 生成所有两两无重复组合
  mutate(pairs = list(combn(vars, 2, paste, collapse = "&"))) %>%
  unnest(pairs) %>%
  # 统计组合出现次数
  count(pairs, name = "n") %>%
  # 按频率降序排序
  arrange(desc(n))

# 匹配预期结果的列名
colnames(co_occur) <- c("frequent contacts", "n")

print(co_occur)

关键说明

  • c_across(everything())自动捕获当前行所有变量,无需提前知晓列名;
  • combn(vars, 2)生成无重复的两两组合,避免重复统计(如x&a和a&x视为同一组合);
  • na.omit()自动过滤空值,排除无效组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:05:20