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

R语言中如何将分类变量转为哑变量并合并重复ID?

将含重复ID的分类数据转换为哑变量宽格式

嘿,这个需求在处理分类数据时超常见,我给你分享几种实用的R实现方法,都能完美把你的长格式数据转成每个ID一行的哑变量宽格式:

方法一:用tidyverse工具链(推荐,代码易读且灵活)

这是现在R数据处理的主流方式,用dplyr做数据操作,tidyr做格式转换:

# 先加载tidyverse包(如果没安装先运行install.packages("tidyverse"))
library(tidyverse)

# 你的示例数据
df <- data.frame(
  ID = c("A", "B", "C", "A", "C", "B"), 
  Color = c("Red", "Blue", "Green", "Blue", "Blue", "Red")
)

# 核心转换步骤
result_df <- df %>%
  mutate(value = 1) %>%  # 为每个存在的ID-Color组合标记1
  pivot_wider(
    names_from = Color,       # 将Color列的类别转为新列名
    values_from = value,      # 用value列的值填充新列
    names_prefix = "Color_",  # 给新列名加上指定前缀
    values_fill = 0           # 对ID没有的类别填充0
  )

# 查看结果
print(result_df)

运行后就能得到你想要的格式,这个方法的好处是可以轻松扩展到更多列,或者调整前缀、填充值等参数。

方法二:基础R实现(无需额外安装包)

如果你不想加载第三方包,用基础R的table函数就能快速搞定:

# 示例数据
df <- data.frame(
  ID = c("A", "B", "C", "A", "C", "B"), 
  Color = c("Red", "Blue", "Green", "Blue", "Blue", "Red")
)

# 生成ID和Color的交叉统计表(自动统计出现次数,这里结果是0或1)
cross_table <- table(df$ID, df$Color)

# 转换为数据框并调整格式
result_df <- as.data.frame.matrix(cross_table)
colnames(result_df) <- paste0("Color_", colnames(result_df))  # 添加前缀
result_df <- tibble::rownames_to_column(result_df, "ID")      # 将行名转为ID列

# 查看结果
print(result_df)

这个方法非常简洁,适合快速处理简单数据,缺点是灵活性不如tidyverse,但胜在无需额外依赖。

方法三:用model.matrix(适合统计建模场景)

如果你后续要做回归等统计分析,model.matrix生成哑变量的方式会更贴合建模需求:

# 加载dplyr辅助分组(也可以用基础R实现)
library(dplyr)

# 示例数据
df <- data.frame(
  ID = c("A", "B", "C", "A", "C", "B"), 
  Color = c("Red", "Blue", "Green", "Blue", "Blue", "Red")
)

# 先提取每个ID对应的唯一类别
unique_df <- df %>% distinct(ID, Color) %>% mutate(dummy = 1)

# 生成哑变量矩阵
dummy_matrix <- model.matrix(~ Color - 1, data = unique_df)
colnames(dummy_matrix) <- gsub("Color", "Color_", colnames(dummy_matrix))

# 合并并按ID分组聚合(保留每个ID的最大取值,即存在则为1)
result_df <- cbind(unique_df["ID"], dummy_matrix) %>%
  group_by(ID) %>%
  summarise(across(everything(), max))

# 查看结果
print(result_df)

这个方法生成的哑变量格式和建模要求一致,适合后续直接用于模型输入。

内容的提问来源于stack exchange,提问作者Raphaël Liev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:45:57