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

如何统计两列变量的组合频次?附R语言示例数据

统计数据框两列变量组合频次的解决方案

这里提供几种在R中统计两列变量所有组合频次的实用方法,结果可直接用于绘制柱状图或饼图:

方法1:基础R的table()函数

这是最简便的原生方法,直接生成交叉频次表:

# 生成交叉频次表
freq_table <- table(dat$a, dat$b)
# 查看完整频次表
print(freq_table)
# 提取特定组合(x & yes)的数量
freq_table["x", "yes"] # 输出结果为5

输出的交叉表中,行对应a列的取值,列对应b列的取值,单元格数值就是对应组合的出现次数。

方法2:dplyr包生成结构化数据框

如果需要长格式的数据框(更适配ggplot绘图),可以用dplyr的分组计数:

library(dplyr)

# 分组统计频次
freq_df <- dat %>%
  group_by(a, b) %>%
  summarise(count = n(), .groups = "drop")

# 查看结果
print(freq_df)
# 提取x&yes组合的数量
freq_df %>% filter(a == "x", b == "yes") %>% pull(count)

得到的freq_df包含三列:a、b和对应组合的count,直接可以作为绘图数据。

方法3:data.table包适配大数据场景

如果你的数据量很大,data.table的分组计数效率更高:

library(data.table)

# 转换为data.table格式
setDT(dat)
# 分组统计频次
freq_dt <- dat[, .(count = .N), by = .(a, b)]

# 查看结果
print(freq_dt)

快速绘图示例

以dplyr生成的freq_df为例,绘制柱状图:

library(ggplot2)
ggplot(freq_df, aes(x = paste(a, b, sep = "-"), y = count)) +
  geom_col(fill = "#2E86AB") +
  labs(x = "变量组合", y = "频次", title = "两列变量组合频次分布")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:44:57