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

如何将两个含不同类别的数据框转换为类别列格式的计数表?

解决方案代码

先模拟你的数据场景,方便对应实际数据:

library(dplyr)
library(tidyr)

# 模拟y_t2(来自DF1,含A、B类别计数)
y_t2 <- tibble(category = c("A", "B"), count = c(10, 15))
# 模拟y_t3(来自DF2,无A、B,只有C、D类别计数)
y_t3 <- tibble(category = c("C", "D"), count = c(8, 12))

按需求转换为目标计数表:

# 1. 给每个数据框添加来源标识
y_t2 <- y_t2 %>% mutate(source = "DF1")
y_t3 <- y_t3 %>% mutate(source = "DF2")

# 2. 合并数据框,补全所有可能的类别,缺失计数填0
combined <- bind_rows(y_t2, y_t3) %>%
  complete(source, category, fill = list(count = 0))

# 3. 转换为宽表:类别为列,来源为行
count_table <- combined %>%
  pivot_wider(names_from = category, values_from = count)

# 查看结果
count_table

运行后会得到如下结果:

# A tibble: 2 × 5
  source     A     B     C     D
  <chr>  <dbl> <dbl> <dbl> <dbl>
1 DF1       10    15     0     0
2 DF2        0     0     8    12

如果你的y_t2/y_t3还没统计好类别计数,是原始数据,可以提前加统计步骤:

# 从DF1生成带标识的计数表y_t2
y_t2 <- DF1 %>%
  count(category) %>%
  mutate(source = "DF1")

# DF2同理生成y_t3
y_t3 <- DF2 %>%
  count(category) %>%
  mutate(source = "DF2")

核心是用complete补全所有来源-类别组合,再转宽表,解决rbind后缺失类别无数据的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:11:31