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

R语言条件替换列值:保留Dict为C的行不变的实现问题

问题解答:根据Dict列条件保留或修改DataFrame的A/B列值

问题说明

现有包含A、B、Dict三列的DataFrame,Dict列的取值规则如下:

  • "A"或"B":该行的有效值需归属到对应列,另一列置0(有效值为A+B的和)
  • "C":该行的A、B列值保持原样不变

示例输入

A            B             Dict
0           123            B
0           123            A
123         0              A
123         0              C
0           123            C

期望输出

A            B             Dict
0           123             B
123          0              A
123          0              A
123          0              C
0           123             C

现有代码问题

当前使用的代码会把Dict为"C"的行的A、B列都置为0,不符合需求:

df %>%
  mutate(across(A:B, ~ ifelse(Dict == cur_column(), A+B, 0))) 

修改后的解决方案

在ifelse逻辑中增加一层判断,当Dict为"C"时直接保留原列值即可:

df %>%
  mutate(across(A:B, ~ ifelse(Dict == "C", ., ifelse(Dict == cur_column(), A+B, 0))))

代码逻辑说明

  • 优先判断Dict == "C":如果是C,直接返回当前列的原始值(.代表当前处理的列)
  • 非C的行沿用原逻辑:当前列名与Dict值一致时,赋值为A+B的和;否则置0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:31:23