我的目标是将某些列放到行中,这些列共享一个 id,例如班级组中的学生。
请看这里:
Group Student1 Age1 Grade1 Student2 Age2 Grade2
1 1 Sarah 17 A John 16 B
2 2 Tom 15 B Harry 16 C
3 3 Mary 15 C Jack 18 A
我想要这些数据,以便每一行都是学生而不是上面的组:
Group Student Age Grade
1 1 Sarah 17 A
2 1 John 16 B
3 2 Tom 15 B
4 2 Harry 16 C
5 3 Mary 15 C
6 3 Jack 18 A
我试过使用
newData <- melt(dat, id.vars = c("id"))
但这给了我一个 id 列表和所有其他值作为一列。有没有获得上述结果的功能?
数据:
dat <- structure(
list(
Group = 1:3,
Student1 = c("Sarah", "Tom", "Mary"),
Age1 = c(17L, 15L, 15L),
Grade1 = c("A", "B", "C"),
Student2 = c("John", "Harry", "Jack"),
Age2 = c(16L, 16L, 18L),
Grade2 = c("B", "C", "A")
),
class = "data.frame",
row.names = c(NA,-3L)
)