2011-06-13 4 views
3

У меня есть данные, в которых каждый участник сделал 3 суждения по каждому из 9 объектов (27 суждений). 9 объектов изменялись в дизайне 3x3 (внутри предметов), поэтому есть 2 фактора.Измените данные от длинного до полуширины в R

Я начинаю с ID + 27 столбцов данных, и мне нужно иметь

  • ID
  • 2 фактора столбцов: Производительность, ситуационных
  • 3 значений столбцов: Success, ProbAdmit, Допускают

Я прочитал руководства по reseape() и 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   .... 

Что мне нужно, это dataframe как этот

Participant Performance Situation SuccessValue ProbAdmitValue AdmitValue 
4001  GL   IL  5.0   60    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, Success. value_var = 'value' указывает, что должны отображаться записи столбца value для каждой комбинации «Row-Column».

+0

хороший! Спасибо! Я еще не нашел reshape2 или dcast, но на самом деле формула была тем, что мне действительно нужно. теперь, когда вы это сделали, это выглядит так очевидно. благодаря! –

+0

@ Да, пожалуйста. –

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