3

我有数据,其中每个参与者对 9 个对象(27 个判断)中的每个对象做出 3 个判断。9 个对象以 3x3 设计(在受试者内)变化,因此有 2 个因素。

我从 ID + 27 个数据列开始,我需要有

  • ID
  • 2 个因素列:性能、情况
  • 3 个值列:Success、ProbAdmit、Admit

我已经阅读了 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
...

谢谢!

4

1 回答 1

9

试试这个:

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

思考dcast正在做的事情的一种方法是:将数据帧“转换”为宽格式,其中行是 的组合,Participant + Performance + Situation列是 的不同可能值Item,即Admit, ProbAdmit, Successvalue_var = 'value'表示value应该为每个“行-列”组合显示列的条目。

于 2011-06-13T18:32:32.120 回答