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

如何在R语言中对变量的无序组合进行计数?

统计R数据框中无序变量组合的出现次数

要解决"AB"和"BA"视为同一组合的计数问题,核心是先把每行的两个变量按固定顺序(比如字母序)统一,再统计次数,下面提供两种实用方法:

方法一:tidyverse风格解决方案(dplyr + purrr)

逐行对v1和v2排序,合并成标准化的组合字符串后统计次数:

library(dplyr)
library(purrr)

df <- data.frame(v1 = c("A", "A", "B", "B"),
                 v2 = c("B", "C", "C", "A"))

result <- df %>%
  rowwise() %>%
  mutate(comb = paste(sort(c(v1, v2)), collapse = ",")) %>%
  ungroup() %>%
  count(comb, name = "n")

print(result)

运行后输出结果:

# A tibble: 3 × 2
  comb      n
  <chr> <int>
1 A,B       2
2 A,C       1
3 B,C       1

方法二:基础R解决方案(无需额外包)

用apply逐行处理变量,再通过table完成统计:

df <- data.frame(v1 = c("A", "A", "B", "B"),
                 v2 = c("B", "C", "C", "A"))

# 生成标准化的组合字符串
df$comb <- apply(df, 1, function(x) paste(sort(x), collapse = ","))

# 统计次数并转换为目标格式
result <- as.data.frame(table(df$comb)) %>%
  rename(comb = Var1, n = Freq)

print(result)

原方法失效原因

count(df, v1, v2)会严格按照v1和v2的顺序识别组合,"A,B"和"B,A"会被判定为两个不同组别,因此必须先对每行变量做排序标准化,再进行统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:27:02