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

如何生成按行计算的比例表格列表?

按行计算比例表格的R实现

原始数据生成代码

set.seed(222)
df = data.frame(x = trunc(runif(10,0,2)),
                y = trunc(runif(10,4,6)),
                z = trunc(runif(10,19,21)),
                m = trunc(runif(10,28,30)))

t1 = table(df$x,df$y)
t2=table(df$z,df$m)

L = list(t1,t2)
L1 <- lapply(L, as.data.frame.matrix)

解决方案

以下两种方式均可实现按行计算各元素占该行总和的比例:

方法一:使用apply按行处理

# 遍历列表,对每个矩阵按行计算比例
L_proportions <- lapply(L1, function(mat) {
  # 对每行执行元素/行总和操作,转置后保持原矩阵结构
  t(apply(mat, 1, function(row) row / sum(row)))
})

# 查看结果
L_proportions

方法二:使用rowSums结合矩阵运算(更高效)

# 利用向量广播运算实现,代码简洁且效率更高
L_proportions <- lapply(L1, function(mat) {
  mat / rowSums(mat)
})

# 查看结果
L_proportions

输出结果

[[1]]
          4         5
0 0.6666667 0.3333333
1 0.7500000 0.2500000

[[2]]
          28        29
19 0.6000000 0.4000000
20 0.2000000 0.8000000

说明

  • 方法二通过矩阵与行和向量的广播运算完成计算,代码更简洁,且在处理大规模矩阵时效率明显优于方法一。
  • 两种方法最终输出结果完全一致,均为按行计算的比例表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:01:03