Ответ зависит от того, какова структура ваших данных. В статье, на которую вы ссылаетесь, Хэдли писал о пакетах «reshape» и «reshape2».
Неясно, какая структура данных в «Таблице 1». Судя по описанию, это будет звучать как matrix
с именованными dimnames (как я показываю в mymat
). В этом случае сработает простой melt
:
library(reshape2)
melt(mymat)
# Var1 Var2 value
# 1 John Smith treatmenta —
# 2 Jane Doe treatmenta 16
# 3 Mary Johnson treatmenta 3
# 4 John Smith treatmentb 2
# 5 Jane Doe treatmentb 11
# 6 Mary Johnson treatmentb 1
Если бы это была не матрица, а data.frame
с row.name
s, вы все равно можете использовать matrix
метод, используя что-то вроде melt(as.matrix(mymat))
.
Если, с другой стороны, "имена" являются столбцом в data.frame
(как в виньетке "тидыр", вам нужно указать либо id.vars
, либо measure.vars
, чтобы melt
знал, как обращаться со столбцами.
melt(mydf, id.vars = "name")
# name variable value
# 1 John Smith treatmenta —
# 2 Jane Doe treatmenta 16
# 3 Mary Johnson treatmenta 3
# 4 John Smith treatmentb 2
# 5 Jane Doe treatmentb 11
# 6 Mary Johnson treatmentb 1
Новичок в блоке - "тидыр". Пакет "tidyr" работает с data.frame
s, потому что он часто используется вместе с dplyr
. Я не буду воспроизводить здесь код для "tidyr", потому что он достаточно освещен в виньетка.
Образец данных:
mymat <- structure(c("—", "16", "3", " 2", "11", " 1"), .Dim = c(3L,
2L), .Dimnames = list(c("John Smith", "Jane Doe", "Mary Johnson"
), c("treatmenta", "treatmentb")))
mydf <- structure(list(name = structure(c(2L, 1L, 3L), .Label = c("Jane Doe",
"John Smith", "Mary Johnson"), class = "factor"), treatmenta = c("—",
"16", "3"), treatmentb = c(2L, 11L, 1L)), .Names = c("name",
"treatmenta", "treatmentb"), row.names = c(NA, 3L), class = "data.frame")
person
A5C1D2H2I1M1N2O1R2T1
schedule
08.07.2015
libray(reshape2); melt(table1)
(если ваш набор данных называется table1). - person A5C1D2H2I1M1N2O1R2T1   schedule 08.07.2015data.frame
s, в то время как пакет reshape2 обрабатывает и другие типы данных. - person A5C1D2H2I1M1N2O1R2T1   schedule 08.07.2015tidyr
код. - person Gregor Thomas   schedule 08.07.2015