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

R语言按参与者分组累加正确试次遇0重置的实现问题

实现方案

使用dplyr两层分组即可实现需求,核心逻辑是先为每个参与者生成遇0递增的分段标记,再在每个分段内做累加计算:

library(dplyr)
df <- df %>%
  # 第一层分组:按参与者分组
  group_by(Participant) %>%
  # 生成分段标记:每遇到1次Correct=0,分段号+1
  mutate(segment = cumsum(Correct == 0)) %>%
  # 第二层分组:按参与者+分段号分组
  group_by(Participant, segment) %>%
  # 同分段内累加Correct值,自然实现遇0重置
  mutate(Count = cumsum(Correct)) %>%
  # 清理临时列,转回普通数据框
  ungroup() %>%
  select(-segment) %>%
  as.data.frame()

输出结果验证

运行后得到的Count列完全符合需求:

ParticipantTrialNumberCorrectCount
118111
118212
118313
118414
118515
118616
118717
118800
118911
1181012
120111
120212
120313
120414
120500
120611
120700
120811
120912
1201013

如果不需要保留Correct=0行的Count为0,而是希望0行留空、从0之后的第一个1重新从1计数,只需要在生成Count时加判断即可:mutate(Count = ifelse(Correct == 0, NA, cumsum(Correct)))


内容的提问来源于stack exchange,提问作者r.rodrigues18

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:01