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

如何使用dplyr将多列中1、2转为0,3、4转为1?

实现方法

1. 你需要的mutate() + across() + case_when()组合写法

library(tidyverse)

result_tbl <- sample_tbl %>%
  mutate(
    # 对所有列执行转换
    across(
      .cols = everything(),
      .fns = ~ case_when(
        .x %in% c(1, 2) ~ 0L,
        .x %in% c(3, 4) ~ 1L
      )
    )
  )

参数说明:

  • everything()指定对所有列生效,如果你只要转换部分列,可以替换为对应的列选择规则
  • 以~开头的是purrr风格匿名函数,.x指代每一列的单个元素
  • 数值后加L是为了保持输出为整数类型,和原数据格式一致,去掉也能正常运行,输出为数值型

2. 更简洁的逻辑判断写法

因为3、4均满足大于等于3的条件,逻辑值TRUE转整数为1,FALSE转整数为0,可以直接简化为:

result_tbl <- sample_tbl %>%
  mutate(across(everything(), ~ as.integer(.x >= 3)))

输出结果

执行上述代码后输出和预期一致:

# A tibble: 10 × 10
      X1    X2    X3    X4    X5    X6    X7    X8    X9   X10
   <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
 1     1     0     1     0     0     0     1     0     0     1
 2     1     1     1     1     1     1     1     1     0     1
 3     0     1     1     1     1     1     0     1     1     0
 4     1     1     1     0     0     1     0     0     1     1
 5     0     1     0     1     0     1     1     1     0     0
 6     1     0     0     1     0     0     1     0     1     0
 7     0     1     0     0     1     1     0     1     1     0
 8     1     1     0     0     1     0     0     1     0     0
 9     0     1     1     0     1     0     0     1     1     0
10     1     0     0     0     0     1     0     1     1     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:39:04