2011-06-13 5 views
3

各参加者が9つのオブジェクト(判断27件)ごとに3つの判断を行ったデータがあります。 9つのオブジェクトは3x3デザイン(被験者内)で異なり、2つの要素があります。ロングからセミワイドへのデータの整形R

私はID + 27のデータ列を始めている、と私は

  • ID
  • 2倍カラム持っている必要があります:パフォーマンス、状況
  • 3値の列を:成功、ProbAdmitは、
  • を認めます

私はreshape()とmelt()とcast()についてのマニュアルを読みましたが、それを実現するために何が必要なのかまだ分かりません。ここに私の実際のデータを見ることができる私の現在の進歩があります。

scsc3 <- read.csv("http://swift.cbdr.cmu.edu/data/SCSC3-2006-10-10.csv") 
library(reshape) 
scsc3.long <- melt(scsc3,id="Participant") 
scsc3.long <- cbind(scsc3.long,colsplit(scsc3.long$variable,split="[.]",names=c("Item","Candidate","Performance","Situation"))) 
scsc3.long$variable <- NULL 
scsc3.long$Candidate <- NULL 

上記のコードは、これで私の葉:私は必要なもの

Participant value Item  Performance Situation 
4001   5.0 Success GL   IL 
4001   60  ProbAdmit GL   IL 
4001   1  Admit  GL   IL 
4002   .... 

おかげでこの

Participant Performance Situation SuccessValue ProbAdmitValue AdmitValue 
4001  GL   IL  5.0   60    1 
... 

のようなデータフレームです!

答えて

9

はこれを試してみてください:dcastが何をしているかを考えるために

require(reshape2) 
> dcast(scsc3.long, 
     Participant + Performance + Situation ~ Item, 
     value_var = 'value') 

    Participant Performance Situation Admit ProbAdmit Success 
1  4001   GH  IH  1  100  7 
2  4001   GH  IL  1  50  5 
3  4001   GH  IM  1  60  5 
4  4001   GL  IH  0  40  3 
5  4001   GL  IL  0   0  2 
6  4001   GL  IM  0  40  4 
... 

一つの方法は次のとおりです。行がParticipant + Performance + Situationの組み合わせであり、 列があるワイドフォーマット にデータフレームを「キャスト」 Itemの異なる可能な値、すなわちAdmit, ProbAdmit, Successvalue_var = 'value'は、「行と列」の組み合わせごとにvalue列のエントリを表示する必要があることを示します。

+0

優秀!ありがとうございました!私はreshape2やdcastはまだ見つかりませんでしたが、実際には、この式は本当に必要なものでした。今ではそれをやったので、それはもちろん明らかです。ありがとう! –

+0

@Samよろしくお願いいたします。 –