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

如何将table()生成的多列频数统计结果转换为指定结构的DataFrame?

解决方案

方法一:基础R实现

通过循环遍历目标列,将每列的频数统计结果转换为单行数据,再合并为最终数据框:

# 指定需要处理的列名
target_cols <- c("ag", "bg", "cg", "dg", "eg")

# 循环处理每一列,把table结果转成单行数据框
freq_list <- lapply(target_cols, function(col) {
  as.data.frame(t(table(df[[col]])))
})

# 合并所有行数据
final_df <- do.call(rbind, freq_list)

# 添加Group列对应原数据列名
final_df$Group <- target_cols

# 查看结果
final_df

方法二:tidyverse工具包实现

用管道式操作完成,代码更简洁直观:

library(tidyverse)

final_df <- df %>%
  # 把所有列转成长格式,列名存为Group,值存为Value
  pivot_longer(everything(), names_to = "Group", values_to = "Value") %>%
  # 按Group和Value统计频数
  count(Group, Value) %>%
  # 转回宽格式,把Value的取值设为列名,频数作为对应值
  pivot_wider(names_from = Value, values_from = n)

# 查看结果
final_df

两种方法最终都会生成你需要的结构:

High Low Moderate Group
1  648 628      628    ag
2  648 628      628    bg
3  648 628      628    cg
4  648 628      628    dg
5  648 628      628    eg

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:54:33