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

如何拆分仅含0和1的整数列?使用tidyverse的separate函数未成功

二进制列拆分为两列的解决方案

你用separate函数没成功是正常的——这个函数是用来按分隔符拆分字符串列的(比如把"x|y"拆成两列),但你的列是单个0/1数值,没有分隔符,完全不匹配它的使用场景。

下面给你两种用tidyverse实现需求的方法,先拿示例数据演示:

library(tidyverse)

# 构造示例数据集
df <- tibble(binary_col = c(0, 1, 0, 1, 1))

方法一:用pivot_wider转换宽表

适合需要动态处理不同值的场景(哪怕以后列里多了其他值也能扩展):

df %>%
  mutate(row_id = row_number()) %>% # 添加行号,避免重复行导致转换失败
  pivot_wider(
    names_from = binary_col,
    values_from = binary_col,
    names_prefix = "col_", # 给新列加前缀
    values_fill = 0, # 缺失值填充为0
    values_fn = ~1 # 标记当前行对应值存在
  ) %>%
  select(-row_id) # 移除临时行号列

运行后会得到两列:col_0和col_1,原列值为0时col_0=1、col_1=0;原列值为1时则相反。

方法二:用mutate直接生成新列

如果确定只有0和1两种值,这种方法更直接高效:

df %>%
  mutate(
    col_0 = ifelse(binary_col == 0, 1, 0),
    col_1 = ifelse(binary_col == 1, 1, 0)
  )

这样直接根据原列的值,分别生成对应标记列,逻辑清晰易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:35:35