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

如何在R中将DataFrame的Flair列转换为二进制独热编码列?

解决方案

示例数据

先模拟一份和你结构一致的测试数据,方便验证效果:

df <- data.frame(
  Flair = c("技术", "生活", "技术", "娱乐"),
  Text = c("R语言技巧", "日常做饭", "数据处理", "电影推荐"),
  Time = c("2024-01-01", "2024-01-02", "2024-01-03", "2024-01-04")
)

方法1:使用tidyverse工具链

适合习惯tidy风格的用户,步骤清晰:

library(tidyverse)

df_result <- df %>%
  # 新增值列,用于转宽时标记匹配行
  mutate(value = 1) %>%
  # 将Flair的唯一值转为列,缺失值填充0
  pivot_wider(
    id_cols = c(Text, Time),  # 保留的核心列
    names_from = Flair,       # 要展开的列
    values_from = value,      # 填充的数值
    values_fill = 0           # 未匹配行填0
  ) %>%
  # 给生成的Flair列添加前缀
  rename_with(~paste0("Flair_", .), -c(Text, Time))

方法2:基础R原生实现

无需额外安装包,适合轻量需求:

# 生成Flair的二进制矩阵(无截距项)
flair_binary <- model.matrix(~ Flair - 1, data = df)
# 给列名添加Flair_前缀
colnames(flair_binary) <- paste0("Flair_", sub("Flair", "", colnames(flair_binary)))
# 合并原数据的Text、Time列与二进制矩阵
df_result2 <- cbind(df[, c("Text", "Time")], flair_binary)

两种方法最终都会得到你需要的结果:保留Text和Time列,同时为每个Flair唯一值生成Flair_前缀的二进制列,匹配行取值1,其余为0。

内容的提问来源于stack exchange,提问作者Säge Zwiebel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:40:48