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

R语言中按特定值断点统计连续正确响应数的dplyr实现方法

使用dplyr统计连续正确响应次数的实现方法

你原有代码的问题是将ResponseCorrect加入了分组变量,导致所有正确响应被归为同一组,只能计算总数,无法实现遇到错误重置的逻辑。


实现方案

方法1:断点分组法(逻辑清晰易理解)

核心思路是用错误响应作为分组断点,将连续的正确响应归为同一组后累加:

library(tidyverse)

result <- df %>%
  # 按被试、任务阶段、block分组,保证不同独立单元的计数互不干扰
  group_by(subject, task_phase, block_number) %>%
  # 构造断点ID:每遇到一次错误响应(值为-1),ID加1
  mutate(run_id = cumsum(ResponseCorrect == -1)) %>%
  # 加入断点ID作为分组维度
  group_by(run_id, .add = TRUE) %>%
  # 组内计算连续正确次数:错误直接返回0,正确则累加
  mutate(ConsecutiveCorrect = ifelse(ResponseCorrect == -1, 0, cumsum(ResponseCorrect))) %>%
  # 清理辅助列与分组
  ungroup() %>%
  select(-run_id)

方法2:累加器法(代码更简洁)

使用dplyr::accumulate迭代计算,遇到错误直接重置累加值:

result <- df %>%
  group_by(subject, task_phase, block_number) %>%
  mutate(ConsecutiveCorrect = accumulate(ResponseCorrect, ~ifelse(.y == -1, 0, .x + .y))) %>%
  ungroup()

两种方法均可完全匹配你给出的预期输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:06:03