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

在R语言中如何根据指定条件交换两列的数值?

实现方法

方法1:base R(无需额外安装包)

直接定位需要互换的行,批量替换两列的值即可,逻辑简单性能好:

# 定位d_code不是以7/8开头的行
swap_rows <- !grepl("^[78]", sample_df$d_code)
# 互换对应行的d_code和c_code
sample_df[swap_rows, c("d_code", "c_code")] <- sample_df[swap_rows, c("c_code", "d_code")]

方法2:tidyverse风格(dplyr+stringr)

如果你习惯用tidyverse语法,可以用mutate结合字符串匹配实现,可读性更高:

library(dplyr)
library(stringr)

result_df <- sample_df %>%
  mutate(
    need_swap = !str_starts(d_code, "^[78]"),
    tmp = d_code,
    d_code = ifelse(need_swap, c_code, d_code),
    c_code = ifelse(need_swap, tmp, c_code)
  ) %>%
  select(-need_swap, -tmp)

运行后得到的结果和期望输出完全一致:

sum d_code c_code
1  98   7300   1200
2  73   8300   1500
3  62   8400   1050

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:15:02