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

R语言dplyr使用case_when与mutate计算时将负值置零的方法

保留case_when结构实现燃气发电机差值负值置0

不需要调整原有case_when的分支框架,只需要修改燃气类型对应的计算表达式,对计算出的差值做负值截断即可,风力发电机的计算逻辑可以完全保留。

推荐实现代码

library(dplyr)

Difference_Data <- Generation_Data %>% 
  mutate(Difference = case_when(
    Fuel_Type == 'Wind' ~ Available_Capacity - Output,
    Fuel_Type == 'Gas' ~ pmax(Capability - Output, 0)
  ))

逻辑说明

  • 这里用R原生的pmax()函数做并行最大值计算:对每一条燃气发电机记录,先计算Capability - Output的差值,如果差值≥0就返回原计算结果,如果差值<0就直接返回0,刚好满足负值自动置0的需求。
  • 如果更习惯用判断函数,也可以把燃气分支的表达式替换成ifelse(Capability - Output < 0, 0, Capability - Output),效果完全一致,但pmax写法更简洁,执行效率也更高。

示例数据运行结果

用给出的示例数据集运行上述代码,得到的Difference列结果完全符合预期:

  • 1号燃气发电机原计算差值为-0.5,处理后返回0
  • 4号燃气发电机计算差值为2,保留原值
  • 3台风力发电机的计算结果和原有逻辑完全一致,没有变动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:33:19