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

将虚拟变量转换为标签向量:DataFrame种族列格式转换需求

将虚拟变量编码的种族列转换为单一分类列

原始数据

df_before <- structure(list(ID = 1:4, White = c(1L, 0L, 0L, 0L), Black = c(0L, 1L, 0L, 0L), Asian = c(0L, 0L, 1L, 1L)), class = "data.frame", row.names = c(NA, -4L))

目标数据

df_after <- structure(list(ID = 1:4, Race = c("White", "Black", "Asian", "Asian")), class = "data.frame", row.names = c(NA, -4L))

解决方案

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

通过宽表转长表筛选出有效分类:

library(tidyverse)

df_after <- df_before %>%
  pivot_longer(cols = -ID, names_to = "Race", values_to = "value") %>%
  filter(value == 1) %>%
  select(-value)

方法2:使用base R

通过列索引匹配分类名称:

race_cols <- c("White", "Black", "Asian")
df_after <- data.frame(
  ID = df_before$ID,
  Race = race_cols[max.col(df_before[, race_cols])]
)

方法3:使用dplyr逐行判断

通过条件分支直接映射分类:

library(dplyr)

df_after <- df_before %>%
  rowwise() %>%
  mutate(Race = case_when(
    White == 1 ~ "White",
    Black == 1 ~ "Black",
    Asian == 1 ~ "Asian"
  )) %>%
  ungroup() %>%
  select(ID, Race)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:15:00