Я знаю, что это очень распространенный пост в SO, но я потратил немного слишком много времени на исследование способа преобразования фрейма данных из длинной формы в широкую форму и не совсем нашел пост (ы) для руководствая через весь процесс.У меня есть фрейм данных, похожий по структуре на представленный ниже, но с более чем 100 строками.По сути, одна и та же структура повторяется каждые 9 строк, но с разными переменными.Тем не менее, для того, чтобы этот пост был как можно более читабельным, я предоставляю первые 9 строк моего фрейма данных.Обратите внимание, что каждый Id
относится к Name
и Pos
.
library("reshape2")
test <- data.frame(
Id = c("9644", "14513", "9874",
"12363", "9673", "9538",
"9585", "23447", "40396"),
Pos = c("SG", "SF", "PF", "C", "PG", "SF",
"SG", "PF", "PG"),
Name = c("John", "James", "Bob", "Sam",
"Mark", "Andrew", "Bobby", "Elaine", "Jerry"),
Score = c(55.66, 43.82, 37.35, 40.59,
35.15, 27.45, 28.82, 28.95,
34.98),
Sal = c(60000, 60000, 60000, 60000,
60000, 60000, 60000, 60000,
60000),
Total = c(332.77, 332.77, 332.77, 332.77,
332.77, 332.77, 332.77, 332.77,
332.77),
TmNumber = c(1, 1, 1, 1, 1, 1, 1, 1, 1))
Я хотел бы преобразовать свои столбцы и переменные в этот формат:
desiredDF <- data.frame(
TmNum = "1",
Id1 = "9644", Id2 = "14513", Id3 = "9874", Id4 = "12363",
Id5 = "9673", Id6 = "9538", Id7 = "9585", Id8 = "23447",
Id9 = "403396",
PG = "Mark", PG = "Jerry", SG = "John", SG = "Bobby",
SF = "James", SF = "Andrew", PF = "Bob", PF = "Elaine",
C = "Sam",
Score1 = "55.66", Score2 = "43.82", Score3 = "3735", Score4 = "40.59",
Score5 = "35.15", Score6 = "27.45", Score7 = "28.82", Score8 = "28.95",
Score9 = "34.98",
Sal = "60000",
Total = "332.77"
)
Я попробовал следующий код (и еще несколько неудачных попыток):
test2 <- dcast(test, TmNum ~ Pos, value.var = "Name")
> test2
TmNum C PF PG SF SG
1 1 1 2 2 2 2
Спасибо!