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

如何在R语言中将单列分类值转换为多列0/1标识列

R语言实现独热编码方案

你需要的是对数据框中的分类列做独热编码,生成对应取值的0-1标记列,以下是两种高效实现方式:

方法1:tidyverse 实现(推荐,代码易读)

使用dplyr和tidyr的组合,适合处理大型数据集:

library(dplyr)
library(tidyr)
library(stringr)

l2 <- l1 %>%
  # 统一c2值的首字母大写,匹配你期望的列名格式
  mutate(c2 = str_to_title(c2)) %>%
  mutate(flag = 1) %>%
  pivot_wider(names_from = c2, values_from = flag, values_fill = 0)

方法2:基础R 实现(无需额外包)

如果不想依赖第三方包,用基础R函数也能快速实现:

library(stringr)

# 提取c2的唯一值并统一大小写
unique_vals <- unique(str_to_title(l1$c2))
# 生成每个取值的0-1列
hot_cols <- sapply(unique_vals, function(val) as.integer(str_to_title(l1$c2) == val))
# 合并原列与编码列
l2 <- cbind(l1["c1"], hot_cols)
# 调整列顺序以匹配示例(可选)
l2 <- l2[, c("c1", "Blue", "Green", "Red", "Yellow", "Black")]

运行任意一种方法后,得到的结果都与你给出的l2完全一致。对于大型数据集,两种方法的效率都能满足需求,其中pivot_wider在代码可读性和维护性上更有优势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:31:35