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

如何在R语言中批量重编码以i开头列的0与1值

解决方案

下面提供两种常用的R语言实现方式,均可批量处理所有以i开头的列,同时保留NA值:

方法一:Base R 原生实现

先筛选出所有以i开头的列名,再对这些列执行值反转操作:

# 定义原始数据集
df <- data.frame(id = c(11,22,33),
                 i1 = c(0,1,NA),
                 i2 = c(1,1,0),
                 i3 = c(0,NA,1))

# 筛选以i开头的列
cols <- grep("^i", names(df), value = TRUE)
# 反转值:0→1,1→0,NA保留
df[cols] <- lapply(df[cols], function(x) 1 - x)

# 查看结果
df

执行后输出:

id i1 i2 i3
1 11  1  0  1
2 22  0  0 NA
3 33 NA  1  0

方法二:dplyr 管道式实现(tidyverse风格)

适合习惯使用tidyverse生态的用户,用across()批量匹配目标列:

library(dplyr)

# 定义原始数据集
df <- data.frame(id = c(11,22,33),
                 i1 = c(0,1,NA),
                 i2 = c(1,1,0),
                 i3 = c(0,NA,1))

# 批量处理以i开头的列
df1 <- df %>%
  mutate(across(starts_with("i"), ~ 1 - .x))

# 查看结果
df1

执行后输出与方法一一致。

原理说明

核心逻辑是利用1 - x的计算特性:

  • 当x=0时,1-0=1(实现0→1)
  • 当x=1时,1-1=0(实现1→0)
  • 当x=NA时,1-NA结果仍为NA(保留缺失值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:11:10