重复测量/混合模型所用宽格式数据转长格式实现方法咨询
实现方案
方案1:使用tidyverse生态的pivot_longer(推荐,代码更简洁易读)
首先加载tidyverse包:
library(tidyverse)
执行转换:
dat_long <- dat %>% pivot_longer( cols = -Participant, # 排除Participant列,其余所有列均参与长表转换 names_to = "Item", # 将原宽表的列名存储为新的Item列 values_to = "Accuracy" # 将原宽表的单元格数值存储为新的Accuracy列 )
转换后的dat_long完全符合你给出的长表结构,可直接传入lme4、lmerTest等包进行混合模型拟合。
方案2:使用R内置函数reshape(无需安装第三方包)
如果你不想额外安装包,可使用基础R自带的reshape函数实现:
dat_long <- reshape( dat, varying = c("Banana", "Apple", "Orange"), # 指定需要转换的宽表列 v.names = "Accuracy", # 指定数值列的名称 timevar = "Item", # 指定存储原列名的列名称 times = c("Banana", "Apple", "Orange"), # 指定Item列的取值 idvar = "Participant", # 指定作为唯一标识的ID列 direction = "long" ) # 可选操作:重置转换后自动生成的行号 row.names(dat_long) <- NULL
内容的提问来源于stack exchange,提问作者vesalius
相关产品推荐
相关产品推荐

