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

如何在R中将分类列频次统计数据框转换为指定宽表格式

R语言长表转宽表实现方案

你需要的是将分组统计后的长表转换为「行对应HAPPY取值、列对应INCOME取值、单元格为count频次」的宽表,有两种常用实现方式:

方式1:tidyverse管道流方案(适配你现有代码)

你可以直接在原有分组统计的代码后追加pivot_wider逻辑,一步得到结果:

library(tidyverse)

df %>% 
  group_by(INCOME, HAPPY) %>% 
  summarise(count = n(), .groups = "drop") %>% 
  pivot_wider(
    names_from = INCOME,
    values_from = count,
    values_fill = 0
  )

参数说明:

  • names_from = INCOME:指定宽表的列名来自INCOME列的取值
  • values_from = count:指定宽表的单元格值来自count列的统计结果
  • values_fill = 0:指定缺失的组合自动填充为0,和你预期的输出完全匹配

如果你已经把分组统计结果存为了中间变量count_df,直接调用转换即可:

count_df %>% 
  pivot_wider(names_from = INCOME, values_from = count, values_fill = 0)

方式2:基础R实现方案

不用加载第三方包,直接用内置的xtabs生成交叉表即可得到你要的结果:

# 直接生成交叉表,输出格式为矩阵
xtabs(~ HAPPY + INCOME, data = df)

# 如需转成数据框格式
as.data.frame.matrix(xtabs(~ HAPPY + INCOME, data = df))

内容的提问来源于stack exchange,提问作者R.yan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:48:03