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

如何在R中合并Tibbles以构建完整社会人口学统计表格?

在R中合并Tibbles生成社会人口学统计表格

解决思路

你需要先统一三个Tibble的列结构,给每个表格添加变量类型标识,再通过行合并得到完整的统计表格。

步骤1:清理单个Tibble

把每个统计结果的分类列重命名为统一名称,并新增一列标注变量类型(比如“教育程度”“婚姻状况”“职业”):

# 处理教育程度统计
a_clean <- a %>%
  rename(category = education) %>%
  mutate(variable = "教育程度")

# 处理婚姻状况统计
b_clean <- b %>%
  rename(category = relationship) %>%
  mutate(variable = "婚姻状况")

# 处理职业统计
c_clean <- c %>%
  rename(category = occupation) %>%
  mutate(variable = "职业")

步骤2:合并所有Tibble

用dplyr::bind_rows()实现行合并,同时调整列顺序让表格更符合统计逻辑:

final_table <- bind_rows(a_clean, b_clean, c_clean) %>%
  select(variable, category, n, `%`)

合并后的表格结构如下:

# A tibble: 10 x 4
   variable   category           n `%`       
   <chr>      <chr>          <int> <formttbl>
 1 教育程度    elementary school     1 25.00%    
 2 教育程度    high school           2 50.00%    
 3 教育程度    university            1 25.00%    
 4 婚姻状况    divorced              1 25.00%    
 5 婚姻状况    married               1 25.00%    
 6 婚姻状况    single                2 50.00%    
 7 职业        doctor                1 25.00%    
 8 职业        student               1 25.00%    
 9 职业        teacher               1 25.00%    
10 职业        unemployed            1 25.00%

进阶优化:批量处理(避免重复代码)

如果变量数量较多,用purrr包批量处理所有变量,不用逐个编写统计代码:

library(purrr)

final_table <- df %>%
  imap_dfr(function(col, var_name) {
    # 过滤NA并统计频次
    col %>%
      discard(is.na) %>%
      table() %>%
      as.data.frame(stringsAsFactors = FALSE) %>%
      # 重命名列
      rename(category = ., n = Freq) %>%
      # 计算百分比并添加变量名
      mutate(
        `%` = formattable::percent(n / sum(n)),
        variable = var_name
      )
  }) %>%
  select(variable, category, n, `%`)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:24:48