如何将部分列转换为行并维护其余列?
我有一个如下所示的示例表:
Name Date Math Science Computer
Zed 201401 89 90 93
Ben 201401 98 92 89
Dan 201401 83 96 92
期望的输出:
Name Date Subject Grade
Zed 201401 Math 89
Zed 201401 Science 90
Zed 201401 Computer 93
Ben 201401 Math 98
Ben 201401 Science 92
Ben 201401 Computer 89
Dan 201401 Math 83
Dan 201401 Science 96
Dan 201401 Computer 92
我尝试使用t(dataFrame)
但它会转置整个数据集。
有人可以帮忙吗?谢谢。
答案 0 :(得分:1)
使用reshape2包中的melt
功能
> library(reshape2)
> melt(df, id=c("Name", "Date"), variable.name="Subject", value.name="Grade")
Name Date Subject Grade
1 Zed 201401 Math 89
2 Ben 201401 Math 98
3 Dan 201401 Math 83
4 Zed 201401 Science 90
5 Ben 201401 Science 92
6 Dan 201401 Science 96
7 Zed 201401 Computer 93
8 Ben 201401 Computer 89
9 Dan 201401 Computer 92
答案 1 :(得分:1)
在基地R中,尝试以下方法:
cbind(mydf[c(1, 2)], stack(mydf[-c(1, 2)]))
# Name Date values ind
# 1 Zed 201401 89 Math
# 2 Ben 201401 98 Math
# 3 Dan 201401 83 Math
# 4 Zed 201401 90 Science
# 5 Ben 201401 92 Science
# 6 Dan 201401 96 Science
# 7 Zed 201401 93 Computer
# 8 Ben 201401 89 Computer
# 9 Dan 201401 92 Computer