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

在R中如何实现基于指定列求和的类table功能?

在R中如何实现基于指定列求和的类table功能?

嗨,这个需求完全可以用R里已有的函数实现,我给你分享几个简单又好用的方法:

方法一:用xtabs()函数(最直接的原生解法)

xtabs()就是专门用来做加权交叉表的原生函数,完美匹配你的需求。它的语法很直观,用公式指定要聚合的数值列和分类列就行:

# 直接运行这行代码就能得到你想要的结果
xtabs(freq ~ x + y, data = example)

运行后输出的结果就是:

y
x       FALSE TRUE
  FALSE    27   44
  TRUE      8  177

完全和你期望的结果一致!这个函数会自动按照x和y的每个组合,把对应的freq值加总,比手动分组求和高效多了。

方法二:用tidyverse系列的dplyr+tidyr(适合熟悉tidy语法的场景)

如果你平时更习惯用tidyverse的工作流,也可以用分组求和再转宽表的方式实现:

library(dplyr)
library(tidyr)

example %>%
  group_by(x, y) %>%
  summarise(total = sum(freq), .groups = "drop") %>%
  pivot_wider(names_from = y, values_from = total, values_fill = 0)

运行后会得到一个数据框格式的结果:

# A tibble: 2 × 3
  x     FALSE  TRUE
  <chr> <dbl> <dbl>
1 FALSE    27    44
2 TRUE      8   177

如果需要转成和table()输出更像的矩阵形式,再加一步column_to_rownames("x") %>% as.matrix()就行。

小补充

本质上这两种方法都是先按x和y的所有组合分组,然后对每组对应的freq列求和。xtabs()是原生函数,适合快速得到类似table的矩阵结果;而tidyverse的方法更灵活,方便后续对结果做进一步的清洗或可视化。

备注:内容来源于stack exchange,提问作者camtastic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:13:02