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

R中如何按条件删除行,保留每位受试者符合要求的最高block数据

解决方案

你正在使用的dplyr包即可直接实现该需求,无需额外安装其他依赖,核心逻辑为:先按受试者、任务块分组统计正确作答数量,过滤掉不足2条正确记录的任务块后,取每位受试者剩余任务块中编号最高的对应记录即可。

场景1:保留最高符合要求block下的所有明细作答记录

library(dplyr)

# 你的原始数据构造
df <- tibble(id = c(1, 1, 1, 1, 1, 2, 2, 2 ),
             block = c(2, 2, 2, 3, 3, 2, 2, 3),
             answer = "TRUE")

result <- df %>%
  # 统计每个id下每个block的正确作答数量
  group_by(id, block) %>%
  mutate(correct_cnt = n()) %>%
  ungroup() %>%
  # 过滤掉正确数不足2的block
  filter(correct_cnt >= 2) %>%
  # 每个id取最高的block对应的所有记录
  group_by(id) %>%
  filter(block == max(block)) %>%
  # 删除辅助统计列,恢复原始表结构
  select(-correct_cnt) %>%
  ungroup()

运行后输出结果将包含:受试者1的block3共2条记录、受试者2的block2共2条记录,完全匹配你的需求。

场景2:仅输出每个受试者1行的汇总结果

如果你不需要保留明细作答,只需要每位受试者对应最高符合要求的block信息,可以使用以下代码:

summary_result <- df %>%
  group_by(id, block) %>%
  summarise(correct_cnt = n(), .groups = "drop") %>%
  filter(correct_cnt >= 2) %>%
  group_by(id) %>%
  slice_max(block, n = 1) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:54:02