2016-05-08 9 views
1

Meine Daten ein Experiment mit einer abhängigen Variablen beinhaltet (DV) über mehrere Bedingungen gesammelt und ist wie folgt aufgebaut:IfElse Anweisung für mehrere, abwechselnd Bedingungen

AnalysedData <- data.frame(Participant = c("Bill", "Bill", "Bill", "Harry", "Harry", "Harry", "Paul", "Paul", "Paul"), 
          Code = c(1, 1, 1, 2, 2, 2, 1, 1, 1), 
          Condition = c("Con", "Expr", "Plac", "Con", "Expr", "Plac", "Con", "Expr", "Plac"), 
          DV = c(26.07, 26.06, 26.05, 26.09, 26.04, 26.65, 26.64, 26.62, 26.63)) 

Alle Teilnehmer die gleichen Bedingungen erhalten, aber vollendet zwei die Bedingungen in einer randomisierten Reihenfolge - die Kontrollbedingung wurde immer zuerst durchgeführt. Diejenigen, die die experimentelle (Expr) Bedingung als ihre zweite Studie abgeschlossen haben, haben eine 1 für Code, während diejenigen, die das Placebo (Plac) als ihre zweite Studie abgeschlossen haben, eine 2 für Code haben.

Ich möchte eine neue Spalte AnalysedData$Trial hinzufügen, wobei die Reihenfolge der Versuche für jeden Teilnehmer enthalten ist. Meine bevorzugte Ausgabe wäre:

AnalysedData <- data.frame(Participant = c("Bill", "Bill", "Bill", "Harry", "Harry", "Harry", "Paul", "Paul", "Paul"), 
          Code = c(1, 1, 1, 2, 2, 2, 1, 1, 1), 
          Condition = c("Con", "Expr", "Plac", "Con", "Expr", "Plac", "Con", "Expr", "Plac"), 
          DV = c(26.07, 26.06, 26.05, 26.09, 26.04, 26.65, 26.64, 26.62, 26.63), 
          Trial = c(1, 2, 3, 1, 3, 2, 1, 2, 3)) 

Die bevorzugte Ausgangsadresse, die Harry die Placebo-Bedingung zweiten und die Versuchsbedingung dritte abgeschlossen, was er c(1, 3, 2). Im Gegensatz dazu vervollständigen Bill und Paul die Versuchsbedingung als zweite und die Placebobedingung als dritte, was c(1, 2, 3) ergibt. Wie oben ist diese alternative Sequenz durch Code angezeigt, was 1 für Bill und Paul, 2 für Harry entspricht.

Ich weiß, dass ich (Con für alle Teilnehmer) unter Verwendung des folgenden abgeschlossen a 1 zu bezeichnen, die erste Studie kann sein:

AnalysedData$Trial <- ifelse(AnalysedData$Condition == "Con", 1, 0) 

Wie füllen wir die oben für mehrere Bedingungen?

Antwort

1

Mit einer Kombination aus ifelse, as.integer (oder as.numeric) und factor Sie nutzen die Tatsache, dass Faktorvariablen gespeichert werden als ganze Zahlen mit Etiketten machen:

AnalysedData$Trial <- ifelse(AnalysedData$Code==1, 
          as.integer(factor(AnalysedData$Condition, 
               levels = c("Con", "Expr", "Plac"))), 
          as.integer(factor(AnalysedData$Condition, 
               levels = c("Con", "Plac", "Expr")))) 

Sie erhalten:

> AnalysedData 
    Participant Code Condition DV Trial 
1  Bill 1  Con 26.07  1 
2  Bill 1  Expr 26.06  2 
3  Bill 1  Plac 26.05  3 
4  Harry 2  Con 26.09  1 
5  Harry 2  Expr 26.04  3 
6  Harry 2  Plac 26.65  2 
7  Paul 1  Con 26.64  1 
8  Paul 1  Expr 26.62  2 
9  Paul 1  Plac 26.63  3 
+1

Danke, mir wurde klar, dass ich 'Code' im Beispiel und' Order' in der erwarteten Ausgabe hatte. Ich habe geändert, so dass "Code" in beiden erscheint. Entschuldigung für die Verwirrung und danke für die Antwort! – user2716568

0

sollte diese Arbeit:

AnalysedData$Trial <- ifelse(AnalysedData$Condition == "Con", 1, 0) 

index<-AnalysedData$Condition == "Plac" 

AnalysedData$Trial[index]<-rep(2,sum(index)) 
+0

Vielen Dank, aber es re sulted in: dput (AnalysisData) Struktur (Liste = Teilnehmer (1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), .Label = c ("Bill", "Harry") ("Paul"), Klasse = "Faktor"), Code = c (1, 1, 1, 2, 2, 2, 1, 1, 1), Bedingung = Struktur (c (1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c ("Con", "Expr", "Plac"), Klasse = "Faktor"), DV = c (26.07, 26.06, 26.05, 26.09 , 26.04, 26.65, 26.64, 26.62, 26.63), Versuch = c (1, 0, 2, 1, 0, 2, 1, 0, 2)), .Names = c ("Teilnehmer", "Code") , "Condition", "DV", "Trial"), row.names = c (NA, -9L), class = "data.frame") – user2716568

+0

Ich bin mir nicht sicher, ob ich meine Frage klar erklärt habe, wie ich danach bin AnalysedData $ Trial <- c (1, 2, 3, 1, 3, 2, 1, 2, 3), die Harry anspricht, der die Placebobedingung als zweites a und experimentelles Drittel, was c (1, 3, 2) ergibt. Im Gegensatz dazu haben Bill und Paul c (1, 2, 3), um die Versuchsbedingung als zweite und Placebo als dritte abzuschließen. – user2716568

Verwandte Themen