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

如何将基于问题列的dataframe转换为基于答案列的dataframe

将分类变量转换为独热编码的R实现方法

下面提供几种简洁的方法实现你需要的DataFrame转换,核心是对are_you_sad和are_you_worried这两个分类列生成独热编码(One-Hot Encoding),同时保留subjects列。

方法1:使用tidyverse工具链(dplyr + tidyr)

这种方法逻辑清晰,适合需要自定义编码规则的场景:

library(dplyr)
library(tidyr)

# 原始数据
questions <- data.frame(subjects = 1:8,
                       are_you_sad = c(1,1,2,3,4,5,3,2),
                       are_you_worried = c(1,3,1,2,2,4,5,3))

# 自定义转换函数
one_hot_encode <- function(df, id_col, cols_to_encode) {
  df %>%
    # 将需要编码的列转为长格式
    pivot_longer(cols = all_of(cols_to_encode), names_to = "question", values_to = "response") %>%
    # 拼接列名(原列名_响应值)
    mutate(response = paste0(question, "_", response)) %>%
    # 转回宽格式,生成独热编码
    pivot_wider(
      id_cols = all_of(id_col),
      names_from = response,
      values_fn = ~1,  # 存在的响应标记为1
      values_fill = 0   # 不存在的响应标记为0
    )
}

# 调用函数得到结果
result <- one_hot_encode(questions, id_col = "subjects", cols_to_encode = c("are_you_sad", "are_you_worried"))
print(result)

方法2:使用fastDummies包(最简实现)

fastDummies包专门用于生成独热编码,一行代码即可完成转换:

library(fastDummies)

# 直接生成独热编码,自动删除原始分类列
result <- dummy_cols(
  questions,
  select_columns = c("are_you_sad", "are_you_worried"),
  remove_selected_columns = TRUE
)
print(result)

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

如果不想加载第三方包,可以用model.matrix实现:

# 原始数据
questions <- data.frame(subjects = 1:8,
                       are_you_sad = c(1,1,2,3,4,5,3,2),
                       are_you_worried = c(1,3,1,2,2,4,5,3))

# 提取主键列
subjects_df <- data.frame(subjects = questions$subjects)

# 对are_you_sad生成独热编码
sad_dummies <- model.matrix(~ factor(questions$are_you_sad) - 1)
colnames(sad_dummies) <- paste0("are_you_sad_", 1:5)

# 对are_you_worried生成独热编码
worried_dummies <- model.matrix(~ factor(questions$are_you_worried) - 1)
colnames(worried_dummies) <- paste0("are_you_worried_", 1:5)

# 合并所有列
result <- cbind(subjects_df, sad_dummies, worried_dummies)
print(result)

以上三种方法都能得到你需要的输出格式,其中fastDummies方法最为简洁,适合快速实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:01:04