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

R语言使用条件语句与循环按ID分组计算breakeven值

R 按分组计算breakeven实现方案

不需要写嵌套循环,直接用dplyr分组统计就能实现,逻辑清晰运行效率也高,完整代码如下:

library(dplyr)

output <- data %>%
  group_by(id) %>%
  summarise(
    breakeven = {
      # 优先判断第16行correlation的规则
      if (n() >= 16 && correlation[16] > 0.999) {
        16
      } else {
        # 定位growth_factor第一个小于0.8的位置
        first_below <- which(growth_factor < 0.8)[1]
        # 无小于0.8的值时取分组最后一位,否则取首次小于0.8的前一位
        ifelse(is.na(first_below), n(), first_below - 1)
      }
    },
    .groups = "drop"
  )

逻辑匹配说明

  • 完全符合提出的计算规则:先校验每个id分组第16行的correlation值,满足>0.999直接返回breakeven=16
  • 不满足第一个规则时,自动匹配growth_factor的计算逻辑:比如示例序列c(0.9, 0.88, 0.7, 0.9),第一个小于0.8的值在第3位,减1得到2,和示例结果完全一致
  • 做了通用边界兼容:如果某个id分组下growth_factor全程没有小于0.8的值,会自动取该分组最后一行的序号作为结果,不会返回空值;如果业务场景里存在第一行就小于0.8的特殊情况,可以在else分支里再加一层判断自定义返回值即可

输出格式

最终返回的结果只有id、breakeven两列,行数等于数据集中唯一id的总数,和期望输出格式完全匹配:

# A tibble: 6 × 2
     id breakeven
  <dbl>     <dbl>
1     4         2
2     5         4
3     6         2
4     7         4
5     8         2
6     9        16

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:33:12