Изменение формы данных с длинного на полуширину в R - PullRequest
3 голосов
/ 13 июня 2011

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

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

  • ID
  • 2 столбца фактора: Производительность, Ситуация
  • 3 столбца значений: Успех, 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
...

Спасибо!

1 Ответ

9 голосов
/ 13 июня 2011

Попробуйте:

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 для каждой комбинации «строка-столбец».

...