Как подготовить данные для факторного анализа повторных измерений?

В настоящее время мой фрейм данных имеет широкоформатный формат, и я хочу провести факторный анализ повторных измерений с двумя факторами между субъектами (пол и организация) и внутрисубъектным фактором (тип задачи). Ниже я проиллюстрировал, как мои данные выглядят на образце (фактический набор данных имеет гораздо больше переменных). Переменные, начинающиеся с «1_» и «2_», относятся к измерениям во время задачи 1 и задачи 2 соответственно. это означает, что 1_FD_H_org и 2_FD_H_org — это одни и те же измерения, но для задач 1 и 2 соответственно.

id  sex  org  task1     task2  1_FD_H_org  1_FD_H_text  2_FD_H_org  2_FD_H_text  1_apv  2_apv
2   F    T    Correct   2      69.97       68.9         116.12      296.02       10     27
6   M    T    Correct   2      53.08       107.91       73.73       333.15       16     21
7   M    T    Correct   2      13.82       30.9         31.8        78.07        4      9
8   M    T    Correct   2      42.96       50.01        88.81       302.07       4      24
9   F    H    Correct   3      60.35       102.9        39.81       96.6         15     10
10  F    T    Incorrect 3      78.61       80.42        55.16       117.57       20     17

Я хочу проанализировать, есть ли разница между двумя задачами, например. FD_H_org для различных групп/состояний (пол и организация).

Как изменить форму данных, чтобы их можно было анализировать с помощью такой модели?
ezANOVA(data=df, dv=.(FD_H_org), wid=.(id), between=.(sex, org), within=.(task))

Я думаю, что правильный формат моих данных должен выглядеть так:

id  sex  org  task  outcome   FD_H_org   FD_H_text  apv
2   F    T    1     Correct   69.97      68.9       10
2   F    T    2     2         116.12     296.02     27
6   M    T    1     Correct   53.08      107.91     16
6   M    T    2     2         73.73      333.15     21

Но я не уверен. Я пытался добиться этого с помощью пакета reshape2, но не мог понять, как это сделать. Кто-нибудь, кто может помочь?


person Jaap    schedule 26.11.2013    source источник


Ответы (1)


Я думаю, что, возможно, вам нужно перестроить его, связав 2 подмножества столбцов вместе с rbind(). Единственная проблема здесь заключалась в том, что ваши результаты подразумевали разные типы данных, поэтому вынуждали их обоих использовать текст:

require(plyr)
dt<-read.table(file="dt.txt",header=TRUE,sep=" ") # this was to bring in your data

newtab=rbind(
  ddply(dt,.(id,sex,org),summarize, task=1, outcome=as.character(task1), FD_H_org=X1_FD_H_org, FD_H_text=X1_FD_H_text, apv=X1_apv),
  ddply(dt,.(id,sex,org),summarize, task=2, outcome=as.character(task2), FD_H_org=X2_FD_H_org, FD_H_text=X2_FD_H_text, apv=X2_apv)
)

newtab[order(newtab$id),]

     id sex org task   outcome FD_H_org FD_H_text apv
  1   2   F   T    1   Correct    69.97     68.90  10
  7   2   F   T    2         2   116.12    296.02  27
  2   6   M   T    1   Correct    53.08    107.91  16
  8   6   M   T    2         2    73.73    333.15  21
  3   7   M   T    1   Correct    13.82     30.90   4
  9   7   M   T    2         2    31.80     78.07   9
  4   8   M   T    1   Correct    42.96     50.01   4
  10  8   M   T    2         2    88.81    302.07  24
  5   9   F   H    1   Correct    60.35    102.90  15
  11  9   F   H    2         3    39.81     96.60  10
  6  10   F   T    1 Incorrect    78.61     80.42  20
  12 10   F   T    2         3    55.16    117.57  17

РЕДАКТИРОВАТЬ - очевидно, вам не нужен plyr для этого (и это может замедлить его), если вы не выполняете дальнейшие преобразования. Это код без нестандартных зависимостей:

  newcolnames<-c("id","sex","org","task","outcome","FD_H_org","FD_H_text","apv")
  t1<-dt[,c(1,2,3,3,4,6,8,10)]
  t1$org.1<-1
  colnames(t1)<-newcolnames
  t2<-dt[,c(1,2,3,3,5,7,9,11)]
  t2$org.1<-2
  t2$task2<-as.character(t2$task2)
  colnames(t2)<-newcolnames
  newt<-rbind(t1,t2)
  newt[order(newt$id),]
person Troy    schedule 26.11.2013