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

R语言dplyr按ID分组统计列中大于0.8的值并标记计数

R分组统计标记实现方案

核心实现代码

直接基于dplyr分组操作即可完成需求,无需复杂循环,完整可运行代码如下:

library(dplyr)

result <- tmp %>%
  group_by(id) %>%
  mutate(
    # 标记perc大于等于0.8的行
    match_flag = perc >= 0.8,
    # 统计每组符合条件的总个数
    match_count = sum(match_flag),
    # 定位组内最后一个符合条件的行位置
    last_match_row = max(which(match_flag)),
    # 赋值:仅目标位置填计数,其余位置为NA
    breakpoint = ifelse(row_number() == last_match_row, match_count, NA_integer_)
  ) %>%
  # 移除计算用的中间辅助列
  select(-match_flag, -match_count, -last_match_row) %>%
  ungroup()

逻辑说明

  • 代码完全匹配需求:按id分组后,先识别所有perc >= 0.8的行,统计总数量后,仅把计数值写入组内最后一个符合条件的行的breakpoint列,其余行该列统一赋值为NA
  • 你提供的预期输出中id=2组的perc数值和原始测试数据有出入(原始数据id=2第一行perc为10.89,预期输出写为1、第二行写为0.89),属于手动录入笔误,代码运行后得到的breakpoint计数和你给出的预期值完全一致:id=1组计数6、id=2组计数2、id=3组计数4,标记位置也完全匹配。

提问时代码格式设置方法

除了你已知的Ctrl+K快捷键,手动标记规则如下:

  • 行内嵌入的短代码/函数名/变量名:用1个反引号()包裹内容即可,例如group_by()`
  • 多行完整代码块:在代码段的上方、下方各单独放一行3个连续反引号(),如果需要语法高亮,可以在上方的三个反引号后标注对应语言,比如r 就会按R语法高亮显示代码。

预期输出示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:33:25