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

R语言pivot_wider()无法匹配同一受试者前后测数据的解决方法

解决方法

问题根源是你用row_number()生成的ID是每行唯一的,导致前测(pre)和后测(post)的行被当成了不同条目,转换后自然无法匹配。要让同一受试者同一题目的前后测处于同一行,你需要明确指定用于匹配的分组变量,而非给每行单独分配ID。

正确代码示例

假设你的数据中,groupi、teacher、item加上受试者标识(如果存在)是区分同一受试者同一题目的关键字段:

情况1:数据有单独的受试者ID(如student_id)

这是最准确的方式,直接将受试者ID加入id_cols:

df_wide <- df %>%
  pivot_wider(
    id_cols = c(student_id, groupi, teacher, item),
    names_from = timing,
    values_from = response
  )

情况2:数据无单独受试者ID

需通过groupi、teacher、item的组合来标识同一受试者的同一题目:

df_wide <- df %>%
  pivot_wider(
    id_cols = c(groupi, teacher, item),
    names_from = timing,
    values_from = response
  )

关键注意点

  • id_cols的作用是定义「哪些字段相同的条目应该合并到同一行」,同一受试者同一题目的pre和post必须在这些字段上完全一致,才能成功匹配。
  • 绝对不要用row_number()生成ID,这会让每行都成为独立条目,彻底破坏前后测的匹配关系。
  • 如果groupi+teacher+item的组合无法唯一区分受试者的题目,说明数据采集时遗漏了受试者标识,需要补充这一信息才能准确匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:46