2016-05-08 11 views
1

マイデータは、いくつかの条件にわたって収集し、以下のように構成された従属変数(DV)を用いて実験を伴う:Ifelse文

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)) 

すべての参加者が同じ条件を受けたが、うちの2つを完了し条件はランダム化された順序で - 制御条件は常に最初に行われました。第2の試験として実験(Expr)の状態を完了した者は、Codeについて1を有し、第2の試験としてプラセボ(Plac)を完了した者はCodeについて2を有する。

私は新しい列AnalysedData$Trialを追加して、各参加者の試行の順序が含まれるようにしたいと考えています。私の好適な出力は次のようになります。

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)) 

ハリーは二プラセボ条件を完了した優先出力アドレスおよび実験条件の第三、彼c(1, 3, 2)与えます。対照的に、ビルとポールはいずれも実験条件2位とプラセボ条件3を完了し、c(1, 2, 3)となる。上記のように、この代替シーケンスは、Code(ビルとポールでは1、ハリーでは2)と表示されます。

私は、以下のものを使用して完成第一審(すべての参加者のためのCon)を指定するには、1を含むことができることを知っている:

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

どのように私は複数の条件については、上記を完了していますか?これは動作するはず

答えて

1

ifelseas.integer(またはas.numeric)の組み合わせでとfactorあなたは因子変数がラベル付き整数として格納されているという事実を利用することができます:

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")))) 

あなたは

> 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

ありがとうございました。私は、この例では 'Code'を、予想される出力では' Order'を持っていることに気付きました。私は 'Code'が両方に現れるように修正しました。混乱のためのお詫びと答えに感謝! – user2716568

0

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

index<-AnalysedData$Condition == "Plac" 

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

ありがとうございます.Label = c( "Bill"、 "Harry");構造体(list(参加者=構造体c(1L、1L、1L、2L、2L、 2L、3L、3L、3L)条件=構造(c(1L、 2L、3L、1L、1L、1L、2L、3L、 DV = c(26.07,26.06,26.05,26.09)、DV = c(26.07,26.06,26.05,26.09)、DV = c(26.07,26.06,26.05,26.09 .Names = c(「参加者」、「コード」、「参加者」、「参加者」、「参加者」、「参加者」、「参加者」、 、 "Condition"、 "DV"、 "Trial")、row.names = c(NA、-9L)、class = "data.frame") – user2716568

+0

私が質問をはっきりと説明しているかどうかはわかりませんプラセボ条件を完了したHarryに対処するAnalysedData $ Trial < - c(1,2,3,1,3,2,1,2,3) 3番目の実験ではc(1、3、2)を与える。対照的に、Bill and Paulは、第2および第3プラセボ条件を完了するためにc(1,2,3)を有する。 – user2716568

関連する問題