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

如何在R语言tidyverse中对tibble的分类变量进行哑变量编码

如何在tidyverse中对因子变量进行哑变量编码

看起来你想要把包含分类因子的tibble转换成哑变量(0/1)格式,最终得到10行8列的数据集——这在统计建模或者机器学习预处理里很常见,我来给你两种基于tidyverse的实现方法,都能满足你的需求:

首先,先重现你的数据集(我加了set.seed()让结果可重复,方便你验证):

library(tidyverse)
set.seed(123) # 确保随机采样结果一致
tib <- as.tibble(list(
  record = c(1:10), 
  gender = as.factor(sample(c("M", "F"), 10, replace = TRUE)), 
  like_product = as.factor(sample(1:5, 10, replace = TRUE))
))

方法1:用model.matrix快速生成(推荐)

model.matrix是R中生成哑变量的经典工具,结合tidyverse的管道可以一步到位,而且会自动处理因子类型的变量:

dummy_tib <- tib %>%
  model.matrix(~ . - 1, data = .) %>% # ~ . 表示用所有变量,-1 表示不生成截距项(保留所有水平的哑变量)
  as.tibble() %>%
  # 可选:去掉变量名里的前缀(比如把genderM改成M)
  rename_with(~ str_remove(., "^gender|^like_product"))

运行后你会得到10行8列的tibble:record + 2个gender哑变量(F/M) + 5个like_product哑变量(1-5),完全符合你的要求。

方法2:用tidyr::pivot_wider手动实现(更直观)

如果你想更清楚地看到哑变量生成的过程,可以用pivot_wider分步处理每个分类变量:

dummy_tib <- tib %>%
  # 处理gender的哑变量:每行对应一个gender水平,填充1,其他为0
  mutate(gender_flag = 1) %>%
  pivot_wider(names_from = gender, values_from = gender_flag, values_fill = 0) %>%
  # 处理like_product的哑变量,逻辑和上面一致
  mutate(product_flag = 1) %>%
  pivot_wider(names_from = like_product, values_from = product_flag, values_fill = 0)

这个方法的好处是每一步都很透明,你可以随时检查中间结果,适合刚接触tidyverse的用户。

验证一下最终结果的结构:

dummy_tib
# A tibble: 10 × 8
   record     F     M     `1`   `2`   `3`   `4`   `5`
   <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1     1     1     0     0     1     0     0     0
 2     2     0     1     1     0     0     0     0
 3     3     0     1     0     1     0     0     0
 4     4     1     0     0     0     1     0     0
 5     5     1     0     0     0     0     1     0
 6     6     0     1     0     1     0     0     0
 7     7     1     0     0     0     0     1     0
 8     8     0     1     0     0     0     1     0
 9     9     1     0     0     0     0     1     0
10    10     0     1     0     0     0     0     1

两种方法都能达到你想要的效果,你可以根据自己的习惯选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:27:56