2013-11-26 2 views
1

В настоящее время мой информационный кадр находится в широкоформатном формате, и я хочу сделать анализ факториальных повторных измерений с двумя между предметными факторами (секс & org) и внутри субъектного фактора (тип задачи). Ниже я проиллюстрировал, как мои данные выглядят с образцом (фактический набор данных имеет намного больше переменных). Переменная, начинающаяся с «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 для разных групп/условий (секс & 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, но не мог понять, как это сделать. Кто может помочь?

ответ

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 

EDIT - очевидно, что вам не нужно 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),] 
+0

Подход с plyr работал :-) – Jaap

+0

отличный - рад, что это сработало! – Troy

Смежные вопросы