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

在R语言中创建展示二元变量重叠计数的5维表格

生成二元变量两两重叠计数矩阵的R实现

这里给你两种简单直接的方案,都能快速得到你要的类似相关矩阵的计数表格:

方案1:矩阵乘法(高效简洁)

二元变量的特性是,两个变量同时取1的次数,等于它们向量的点积。利用这个特性,用矩阵乘法可以一步到位:

# 先模拟5个二元变量的示例数据(替换成你自己的数据即可)
set.seed(123) # 固定随机种子,结果可复现
df <- data.frame(
  a = sample(c(0,1), 100, replace = TRUE),
  b = sample(c(0,1), 100, replace = TRUE),
  c = sample(c(0,1), 100, replace = TRUE),
  d = sample(c(0,1), 100, replace = TRUE),
  e = sample(c(0,1), 100, replace = TRUE)
)

# 转成矩阵后做乘法,得到两两同时为1的计数矩阵
count_mat <- t(as.matrix(df)) %*% as.matrix(df)
# 设置行列名(如果你的数据已经有列名,这步可以省略)
rownames(count_mat) <- colnames(count_mat) <- c("a", "b", "c", "d", "e")

count_mat

运行后你会得到一个5×5的矩阵,每个单元格count_mat[i,j]就是变量i和j同时取1的次数,对角线是每个变量自身取1的次数(如果不需要可以后续用diag(count_mat) <- NA或者手动修改)。

方案2:outer函数自定义计算(直观易懂)

如果觉得矩阵乘法有点抽象,用outer()函数遍历所有变量对,计算同时为1的次数:

# 基于上面的示例数据df
count_mat2 <- outer(
  names(df), 
  names(df), 
  FUN = function(x, y) sum(df[[x]] & df[[y]])
)
# 设置行列名
rownames(count_mat2) <- colnames(count_mat2) <- c("a", "b", "c", "d", "e")

count_mat2

这个方法逻辑更直白:对每一对变量x和y,统计它们同时为1的行数(也就是次数),结果和方案1完全一致。

两种方案都不需要复杂的table函数,直接针对二元变量的特性做计算,比用table再提取结果要高效得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:19:59