R语言如何互换指定数据列中1和2的变量取值?
R语言测试题得分反向转换实现方法
核心逻辑:你的得分只有1、2两个固定取值,反向转换可以直接通过3 - 原得分实现,比条件判断更简洁高效,也可以用条件分支适配有异常值/缺失值的场景。
基础R实现(无需加载额外包)
- 假设你读取的Excel数据存储在数据框
df中,且已经生成了目标列向量CD,直接批量转换即可:
df[CD] <- lapply(df[CD], function(x) 3 - x)
- 如果数据中存在缺失值或者非1/2的异常值,建议用条件判断写法避免错误修改:
df[CD] <- lapply(df[CD], function(x) ifelse(x == 1, 2, ifelse(x == 2, 1, x)))
以上写法会保留非1/2的原始值(包括NA),容错性更高。
tidyverse/dplyr 实现(适配管道操作)
如果你习惯用tidyverse生态的语法,可以用across批量处理目标列:
library(dplyr) df <- df %>% mutate(across(all_of(CD), ~ ifelse(.x == 1, 2, 1)))
结果验证
转换完成后可以执行以下代码抽查前几行的结果,确认转换符合预期:
head(df[CD])
内容的提问来源于stack exchange,提问作者wooden05
相关产品推荐
相关产品推荐

