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

如何用R创建对比两种算法结果组合计数的交叉表

问题解答

这类统计两个分类变量所有组合频数的表格叫做列联表(Contingency Table),以下是用R实现的具体方法:

步骤1:准备数据集

先把你的数据导入到R中,这里直接构造示例数据:

# 构造数据集
df <- data.frame(
  Sample = c("A001", "A002", "A003", "A004", "A005", "A006", "A007", "A008"),
  AlgoA = c("R1", "R2", "R1", "R3", "R1", "R2", "R1", "R3"),
  AlgoB = c("R1", "R3", "R1", "R2", "R1", "R2", "R3", "R3")
)

步骤2:确保变量包含所有可能的水平

因为你的结果只有R1/R2/R3三种,先把AlgoA和AlgoB转为因子并指定所有水平,这样即使某个组合没有样本,也会显示频数为0:

df$AlgoA <- factor(df$AlgoA, levels = c("R1", "R2", "R3"))
df$AlgoB <- factor(df$AlgoB, levels = c("R1", "R2", "R3"))

步骤3:生成列联表统计频数

用table()函数直接生成列联表,行对应AlgoA的结果,列对应AlgoB的结果:

# 生成列联表
contingency_table <- table(df$AlgoA, df$AlgoB)

# 查看结果
contingency_table

运行后会输出:

R1 R2 R3
  R1  3  0  1
  R2  0  1  1
  R3  0  1  1

每个单元格的数值就是对应组合的样本数,比如AlgoA=R1且AlgoB=R1的样本数是3,AlgoA=R1且AlgoB=R2的样本数是0。

可选:转成数据框格式

如果需要长格式的数据框方便后续处理,用as.data.frame()转换:

table_df <- as.data.frame(contingency_table)
colnames(table_df) <- c("AlgoA", "AlgoB", "Count")
print(table_df)

输出结果:

AlgoA AlgoB Count
1    R1    R1     3
2    R2    R1     0
3    R3    R1     0
4    R1    R2     0
5    R2    R2     1
6    R3    R2     1
7    R1    R3     1
8    R2    R3     1
9    R3    R3     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:27:22