R 按id排列数据表
我有以下数据表:R 按id排列数据表,r,data.table,reshape,R,Data.table,Reshape,我有以下数据表: > df month student A B C D 1: 1 Amy 9 6 1 11 2: 1 Bob 8 5 5 2 3: 2 Amy 7 7 2 4 4: 2 Bob 6 6 6 6 5: 3 Amy 6 8 10 7 6: 3 Bob 9 7 11 3 我想将此data.table转换为以下格式:>df1 month cols A
> df
month student A B C D
1: 1 Amy 9 6 1 11
2: 1 Bob 8 5 5 2
3: 2 Amy 7 7 2 4
4: 2 Bob 6 6 6 6
5: 3 Amy 6 8 10 7
6: 3 Bob 9 7 11 3
我想将此data.table转换为以下格式:>df1
month cols Amy Bob
1: 1 A 9 8
2: 1 B 6 5
3: 1 C 1 5
4: 1 D 11 2
5: 2 A 7 6
6: 2 B 7 6
7: 2 C 2 6
8: 2 D 4 6
9: 3 A 6 9
10: 3 B 8 7
11: 3 C 10 11
12: 3 D 7 3
我尝试了使用dcast等多种方法,但无法转换数据。救命啊 您必须
熔化
数据帧,然后dcast
-
tmp = melt(df, id = c("month", "student"), , variable.name = "cols")
df1 = dcast(tmp, month + cols ~ student, value.var = "value")
两者都来自于
数据。表库Atidyr
方法
> library(tidyr)
> df %>%
gather(cols, values, A:D) %>%
spread(student, values)
month cols Amy Bob
1 1 A 9 8
2 1 B 6 5
3 1 C 1 5
4 1 D 11 2
5 2 A 7 6
6 2 B 7 6
7 2 C 2 6
8 2 D 4 6
9 3 A 6 9
10 3 B 8 7
11 3 C 10 11
12 3 D 7 3
是否必须使用数据表
?您可以使用dplyr
中的spread
@不需要数据表。数据帧对我来说也很好。但是我不知道怎么做。