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

如何无需循环基于单行计算值为R数据集新增Residual列?

解决方案

你可以通过先提取Loc==1时的基准值,再将其广播到所有行来实现无循环计算,具体代码如下:

方法1:分步实现

先单独计算基准值,再在管道中引用:

# 提取Loc=1时的基准值
base_val <- data %>% 
  filter(Loc == 1) %>% 
  pull(pmin(XD_VD + SE, val))

# 计算Residual列
data2 <- data %>%
  mutate(Residual = case_when(
    Loc == 1 ~ pmin(XD_VD + SE, val),
    TRUE ~ pmin(base_val + SE, val)
  ))

方法2:单管道连贯实现

无需单独创建变量,在同一个管道内完成:

data2 <- data %>%
  # 生成广播到所有行的基准值列
  mutate(base_val = pmin(XD_VD + SE, val)[Loc == 1]) %>%
  # 计算目标Residual列
  mutate(Residual = case_when(
    Loc == 1 ~ base_val,
    TRUE ~ pmin(base_val + SE, val)
  )) %>%
  # 删除临时基准列
  select(-base_val)

结果验证

针对你提供的数据片段,计算后Residual列的结果为:29, 29.77, 29.77, 29.77, 29.77,完全符合需求逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:21:21