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

如何在tidydata格式中计算各ID的答题正确率占比?

嘿,针对你这个计算每个ID答题正确率的需求,我给你准备了两种常用工具的实现方案,都是处理tidydata的好手:

计算每个ID的答题正确率占比

方案1:用R语言(tidyverse生态)

既然你提到了tidydata,那用dplyr来处理最顺手不过了,步骤清晰明了:

  • 先加载tidyverse包
  • 按ID分组,接着统计每组的总答题数、正确答题数,最后算出正确率
library(tidyverse)

# 假设你的数据存储在名为df的数据框里
accuracy_result <- df %>%
  group_by(ID) %>%
  summarise(
    total_responses = n(),
    correct_responses = sum(`Button-Pressed` == Correct_Answer),
    accuracy_rate = correct_responses / total_responses
  )

# 输出结果
print(accuracy_result)

注意:如果你的列名像Button-Pressed这种带有连字符的特殊符号,一定要用反引号`把列名包裹起来,不然R会识别出错哦

方案2:用Python(pandas库)

要是你习惯用Python处理数据,pandas的分组功能也能轻松搞定这个需求:

import pandas as pd

# 假设你的数据存储在名为df的数据框里
accuracy_result = df.groupby('ID').apply(
    lambda group: pd.Series({
        'total_responses': len(group),
        'correct_responses': (group['Button-Pressed'] == group['Correct_Answer']).sum(),
        'accuracy_rate': (group['Button-Pressed'] == group['Correct_Answer']).mean()
    })
).reset_index()

# 输出结果
print(accuracy_result)

这里用mean()直接得到正确率是个小技巧——布尔值会被自动转换成1(匹配)和0(不匹配),取均值刚好就是正确次数占总次数的比例,省去了手动除法的步骤~

核心逻辑说明

不管用哪种工具,核心思路都是一致的:

  • 按ID对数据进行分组
  • 对每组数据,统计Button-Pressed与Correct_Answer内容匹配的次数
  • 用匹配次数除以该组的总答题次数,得到该ID的答题正确率

比如你给出的示例数据,计算后会得到:

  • ID1的正确率为0(5次答题全错)
  • ID2的正确率为0.5(2次答题里1次正确)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:48:26