任何人都知道如何将列拆分为多个列? 例如:我想拆分列&#34;得分&#34;和&#34; class&#34;,然后制作列&#34;等级&#34;的值作为列名。在我的数据中,我在<#34;等级&#34;列中有 50个不同的值。而不是下面的例子中只有两个。 在数据框2中,行名称是列&#34; class&#34;的值。在数据框1中。
数据框1
class grade score
A a 12
B a 45
C a 75
D a 18
E a 6
A b 45
B b 92
C b 78
D b 36
E b 39
数据框2
a b
A 12 45
B 45 92
C 75 78
D 18 36
E 6 39
答案 0 :(得分:4)
Base R&#39; s unstack
开箱即用:
unstack(df, score ~ grade)
# a b
#1 12 45
#2 45 92
#3 75 78
#4 18 36
#5 6 39
与xtabs
一样:
as.data.frame.matrix(xtabs(score ~ class + grade, data=df))
# a b
#A 12 45
#B 45 92
#C 75 78
#D 18 36
#E 6 39
答案 1 :(得分:2)
library(reshape2)
dcast(df, class ~ grade, value.var = "score")
class a b
1 1 12 45
2 2 45 92
3 3 75 78
4 4 18 36
5 5 6 39
df <- structure(list(class = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L,
5L), grade = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L), .Label = c("a", "b"), class = "factor"), score = c(12L,
45L, 75L, 18L, 6L, 45L, 92L, 78L, 36L, 39L)), .Names = c("class",
"grade", "score"), class = "data.frame", row.names = c(NA, -10L
))
答案 2 :(得分:2)
另一个选项是来自spread
library(tidyr)
library(tidyr)
spread(df1, grade, score)